Wenn Sie mit der Batch-Option nicht wollen, können Sie so etwas wie dies versuchen:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Build">
<PropertyGroup>
<MySolution Condition="'$(MySolution)'==''">MySolution.sln</MySolution>
<Configuration Condition="'$(Configuration)'==''">Release</Configuration>
<SSISServer Condition="'$(SSISServer)'==''">MyServer</SSISServer>
<PROJECTNAME Condition="'$(PROJECTNAME)'==''">MyProjectName</PROJECTNAME>
</PropertyGroup>
<UsingTask TaskName="DeploymentFileCompilerTask" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.SqlServer.IntegrationServices.Build.dll" />
<UsingTask TaskName="DeployProjectToCatalogTask" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.SqlServer.IntegrationServices.Build.dll" />
<Import Condition="Exists('$(MySolution).metaproj')" Project="$(MySolution).metaproj"/>
<Target Name="Initialize">
<MSBuild Projects="$(MySolution)" Properties="Configuration=$(Configuration);MSBuildEmitSolution=1" Targets="Clean" />
</Target>
<Target Name="Build">
<Message Text="**************Building SSIS project: %(ProjectReference.FullPath) for configuration: $(Configuration)**************" />
<DeploymentFileCompilerTask
InputProject="%(ProjectReference.FullPath)"
Configuration="$(CONFIGURATION)"
ProtectionLevel="DontSaveSensitive">
</DeploymentFileCompilerTask>
</Target>
<Target Name="Deploy">
<Message Text="**************Deploying SSIS project: %(ProjectReference.FullPath) for configuration: $(Configuration)**************" />
<Message Text="..\%(ProjectReference.RootDir)%(ProjectReference.Directory)\bin\$(CONFIGURATION)\%(ProjectReference.FileName)%(ProjectReference.Extension).ispac"/>
<DeployProjectToCatalogTask
DeploymentFile="..\%(ProjectReference.RootDir)%(ProjectReference.Directory)\bin\$(CONFIGURATION)\%(ProjectReference.FileName)%(ProjectReference.Extension).ispac"
Instance="$(SSISServer)"
Folder="$(PROJECTNAME)"
CreateFolder="true"/>
</Target>
</Project>
Dies wird erzeugt eine MsBuild Projektversion der Lösung einschließlich Alle enthaltenen Projekte (lesen Sie über msbuildemitsolution), danach wird die generierte "msbuild solution" (.metaproj) importiert und die ProjectReference-Elemente verwendet, um sie einzeln mit dem "DeploymentFileCompi" auszuführen lerTask“und "DeployProjectToCatalogTask"
Sie können dies wie folgt aufrufen:
Für Körperbau:
msbuild SSIS.proj/t: Initialisieren
msbuild SSIS.proj/t Bauen
Für Deploy:
msbuild SSIS.proj/t: Initialisieren
msbuild SSIS.proj/t: Bereitstellen
Das Initialisieren Ziel wird die "msbuild Lösung" erzeugen, und Sie müssen dieses Ziel rufen Stellen Sie sicher, dass der Inhalt aktualisiert wird.
Sie können beliebige der am Anfang definierten Eigenschaften in der Befehlszeile übergeben, um das Skript für verschiedene Lösungen zu verwenden.
Wenn Sie für jedes Projekt verschiedene "Ordner" benötigen, können Sie die Elementmetadaten "Dateiname" (d. H.% (ProjectReference.Filename) anstelle von $ (PROJECTNAME)) verwenden.
Hinweis: Dies ist kein abschließendes funktionierendes Skript, aber es sollte eine klare Vorstellung von der vorgeschlagenen Lösung geben. Wenn Sie die Knoten "DeploymentFileCompilerTask" und "DeployProjectToCatalogTask" des Skripts kommentieren, können Sie sie ausführen und einige Nachrichten sehen die Konsole mit den Daten, die verarbeitet werden.
Können wir davon ausgehen, dass alle unter einer Lösung aufgeführten Projekte SSIS sind? – billinkc
Ja, alle Projekte in der Lösung sind SSIS –