首页 > 解决方案 > 在 CI/CD 实施期间使用 MSBuild 构建 SSIS 项目时出错

问题描述

有人可以帮助解决我在使用 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 格式。

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

标签: visual-studiossismsbuild

解决方案


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

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

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

这里有两种可能有帮助的解决方法:

1.既然你已经安装了VS2015 ,你可以试试用devenv命令代替msbuild命令。

对于 VS2015,我们可以在 path中找到devenv.exe和。两者都适用,但请注意:直接使用 devenv.exe 会阻止输出出现在控制台上devenv.comC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDEdevenv.exedevenv.com

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

2.我们可以找到in的binary( Microsoft.SqlServer.IntegrationServices.Build.dll) 。然后我们可以使用msbuild UsingTask 元素来调用该程序集中定义的任务。SQL Server Data ToolsC:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

DeploymentFileCompilerTask核心是定义这个语句后,在我们自定义的msbuild目标中调用SSIS build的task:

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

更多细节请参考这里这里

更新:

如果我们在同一个解决方案中有多个数据库项目和 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。如果它不影响您的构建,请忽略它。如果我们使用上面的命令,我检查是否不会实际构建数据库项目(数据库项目的输出为空)。


推荐阅读