Если вы не хотите, чтобы с возможностью пакетного вы можете попробовать что-то вроде этого:
<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>
Это будет генерировать версию проекта MSBuild решения, включая все включенные проекты (читайте о msbuildemitsolution), после чего он импортирует сгенерированное «решение msbuild» (.metaproj) и использует элементы ProjectReference для их выполнения один за другим с помощью «DeploymentFileCompi» lerTask»и "DeployProjectToCatalogTask"
Вы можете назвать это так:
Для сборки:
MSBuild SSIS.proj/т: Инициализировать
MSBuild SSIS.proj/т : Построение
Для развертывания:
MSBuild SSIS.proj/т: Инициализировать
MSBuild SSIS.proj/т: Развертывание
Мишень Initialize будет генерировать "MsBuild решение", и вы должны назвать эту цель убедитесь, что контент обновлен.
Вы можете передать любое из свойств, определенных в начале в командной строке, для использования сценария для разных решений.
Если вам нужны разные «Папки» для каждого проекта, вы можете использовать метаданные элементов «Имя файла» (т. Е.% (ProjectReference.Filename) вместо $ (PROJECTNAME)).
Примечание. Это не окончательный рабочий сценарий, но он должен дать четкое представление о предлагаемом решении, если вы прокомментируете узлы сценария «DeploymentFileCompilerTask» и «DeployProjectToCatalogTask», которые вы можете выполнить, и просмотреть некоторые сообщения в консоль с данными, которые будут обработаны.
Можно ли считать, что все проекты, перечисленные в решении, являются SSIS? – billinkc
Да, все проекты в решении SSIS –