gpt4 book ai didi

ssis - 如何让 MSBuild 处理所有 SSIS 项目

转载 作者:行者123 更新时间:2023-12-03 02:49:57 24 4
gpt4 key购买 nike

我已成功关注博客1让 MSBuild 构建 SSIS 项目。这涉及创建 dll 和 MSBuild 脚本。该过程适用于任何单个项目文件。

我正在寻求帮助,以使此过程适用于解决方案 (.sln) 文件中定义的每个 .dtproj 文件。我读过有关 MSBuild 批处理 2但它指的是构建脚本中定义的项目。我希望它能够与解决方案文件中的任何项目一起使用,这样我就不必在每次添加/删除/移动项目时手动编辑脚本。

有什么建议或方法链接吗?感谢您花时间阅读我的问题!

blog

MSBuild Batching

最佳答案

如果您不想使用批处理选项,您可以尝试如下操作:

<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 项一一执行它们使用“DeploymentFileCompilerTask”和“DeployProjectToCatalogTask”

你可以这样调用它:

对于构建:

msbuild SSIS.proj /t:Initialize

msbuild SSIS.proj /t:Build

对于部署:

msbuild SSIS.proj /t:Initialize

msbuild SSIS.proj /t:Deploy

Initialize目标将生成“msbuild解决方案”,您需要调用此目标以确保内容更新。

您可以传递在命令行开头定义的任何属性,以将脚本用于不同的解决方案。

如果每个项目需要不同的“文件夹”,则可以使用“文件名”项元数据(即 %(ProjectReference.Filename) 而不是 $(PROJECTNAME))。

注意:这不是最终的工作脚本,但它应该清楚地说明建议的解决方案,如果您注释脚本的“DeploymentFileCompilerTask”和“DeployProjectToCatalogTask”节点,您可以执行它并在带有将要处理的数据的控制台。

关于ssis - 如何让 MSBuild 处理所有 SSIS 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com