【问题标题】:Error while building SSIS project using MSBuild during CI/CD implementation在 CI/CD 实施期间使用 MSBuild 构建 SSIS 项目时出错
【发布时间】:2020-03-07 19:02:50
【问题描述】:

有人可以帮助解决我在使用 msbuild 构建 SSIS 项目时遇到的以下错误。我在机器上有 Visual Studio 2015。使用 MSBuild 14.0 "*

错误 MSB4041:项目的默认 XML 命名空间必须是 MSBuild XML 命名空间。如果项目是在 MSBuild 200 3 中创作的 格式,请补充 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 到 元素。如果项目是在旧 1.0 或 1.2格式,请转成MSBuild 2003格式。

*" 我在网上浏览了一些文章,但找不到这种情况的解决方案。

【问题讨论】:

  • 这不是 VS2015+msbuild14.0 支持的方案。您可以尝试使用devenv.com xx.dtproj /build 命令,或者您必须编写一个自定义脚本,如this
  • @LanceLi-MSFT - 这很棒,我可以使用 devenv.com 进行构建。我看到的唯一问题是它也在构建我的 dacpac ??。我有一种解决方案,其中我有一个 DB 项目和一个 ETL 项目。我正在提供特定于 ETL 项目的路径,但它仍在构建我的数据库项目
  • 看来对于SSIS项目,我们最好使用this format,类似的格式见here。而且这种奇怪的行为仍然会发生并影响您的构建过程,我建议您将这个问题发布到DC forum。我认为这可能是关于 SSIS 工具的一个问题。如果我的回答有帮助,请告诉我:)
  • 感谢@LanceLi-MSFT。我将花更多时间了解所提供的详细信息。我将基于此标记答案。非常感谢您的 cmets。
  • 很高兴知道它会有所帮助,任何更新请随时与我联系:-)

标签: visual-studio ssis msbuild


【解决方案1】:

*" 我在网上浏览了一些文章,但找不到这种情况的解决方案。

恐怕答案是否定的。目前不支持此方案(使用 msbuild 构建 SSIS 项目)。

有人在 DC 论坛上发布了此问题,请参阅 Support SSIS, SSRS, SSAS in MSBuild。因此,如果您尝试将 azure devops 用于 CI/CD 流程,请投票并跟踪此问题,以便在有任何更新时收到通知。如果您正在使用其他工具进行 CI/CD 流程,我建议您打开一个new feature request 以支持在本地机器中为独立的 msbuild 工具构建 SSIS。

以下两种解决方法可能会有所帮助:

1.由于你已经安装了VS2015,所以你可以试试msbuild command,而不是devenv command

对于 VS2015,我们可以在路径 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE 中找到 devenv.exedevenv.comdevenv.exedevenv.com 都适用于此,但请注意:直接使用 devenv.exe 会阻止输出出现在控制台上

所以devenv.xxx ... xxx.dtproj /build 可以构建 SSIS 项目。

2.我们可以在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE中找到SQL Server Data Tools的二进制(Microsoft.SqlServer.IntegrationServices.Build.dll)。然后我们可以使用msbuild UsingTask element 调用该程序集中定义的任务。

核心是定义此语句后在我们自定义的msbuild目标中调用DeploymentFileCompilerTask任务进行SSIS build:

<UsingTask TaskName="DeploymentFileCompilerTask" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.SqlServer.IntegrationServices.Build.dll" />

更多详情请参考herehere

更新:

如果我们在同一个解决方案中有多个数据库项目和 SSIS 项目。直接使用像devenv.com xx.dtproj 这样的命令实际上将构建所有项目。

所以我建议我们这样使用命令:

  1. 为 VS 打开开发者命令提示符
  2. cd 到解决方案目录
  3. 使用命令:devenv.com SolutionName.sln /Build Development /Project SolutionName\xxx.dtproj /ProjectConfig Development

这实际上只会构建 SSIS 项目。

另外:如果您看到消息The project 'DatabaseProjectName.sqlproj' will close once model building has paused。如果它不影响您的构建,请忽略它。如果我们使用上面的命令,我检查是否不会真正构建数据库项目(数据库项目的输出为空)。

【讨论】:

  • 我能够自动化所有事情,如果没有您提供的信息,这是不可能的。我使用 devenv.com 构建 ssis 和 ISDeploymentWizard.exe 进行部署。
猜你喜欢
  • 2018-06-11
  • 2016-03-08
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
相关资源
最近更新 更多