Bamboo 随机运行不同版本的 msbuild.exe 并构建失败

Posted

技术标签:

【中文标题】Bamboo 随机运行不同版本的 msbuild.exe 并构建失败【英文标题】:Bamboo randomly runs different version of msbuild.exe and build fails 【发布时间】:2015-05-06 09:47:59 【问题描述】:

我使用 Bamboo 使用 VS2012 构建我的 SSDT 数据库解决方案。当我将数据库单元测试项目添加到解决方案中时,问题就开始了。有时构建失败并显示消息是随机的:

错误 CS0234:类型或命名空间名称“VisualStudio”不存在 在命名空间“Microsoft”中(您是否缺少程序集引用?)

Bamboo 始终从以下位置运行 msbuild:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

我注意到每当构建失败时 msbuild.exe 输出是这样的:

Microsoft (R) Build Engine 版本 4.0.30319.18408

[Microsoft .NET Framework,版本 4.0.30319.18449]

但是当构建成功时然后输出是这样的:

Microsoft (R) Build Engine 版本 4.0.30319.34209

[Microsoft .NET Framework,版本 4.0.30319.34209]

我不知道它从哪里获取版本 4.0.30319.18408。我在整个磁盘中搜索了 msbuild.exe 并执行了每个人,但没有一个是 4.0.30319.18408 版本。

我需要建议如何强制 Bamboo 运行正确版本的 msbuild.exe 或如何卸载版本 4.0.30319.18408。

构建机器上的组件如下:

Microsoft .NET Framework 4 Multi-Targeting Pack                        4.0.30319  
Microsoft .NET Framework 4.5 Multi-Targeting Pack                      4.5.50709  
Microsoft .NET Framework 4.5 SDK                                       4.5.50710  
Microsoft .NET Framework 4.5.2 Multi-Targeting Pack                    4.5.51651  
Microsoft .NET Framework 4.5.2 Multi-Targeting Pack (ENU)              4.5.51209  
Microsoft Visual Studio 2010 Shell (Integrated) - ENU                  10.0.40219  
Microsoft Visual Studio 2010 Shell (Isolated) - ENU                    10.0.40219  
Microsoft Visual Studio 2012 Devenv                                    11.0.50727  
Microsoft Visual Studio 2012 Devenv Resources                          11.0.50727  
Microsoft Visual Studio 2012 Performance Collection Tools              11.0.50727  
Microsoft Visual Studio 2012 Performance Collection Tools - ENU        11.0.50727  
Microsoft Visual Studio 2012 Preparation                               11.0.50727  
Microsoft Visual Studio 2012 Shell (Minimum)                           11.0.50727  
Microsoft Visual Studio 2012 Shell (Minimum) Interop Assemblies        11.0.50727  
Microsoft Visual Studio 2012 Shell (Minimum) Resources                 11.0.50727  
Microsoft Visual Studio 2012 Tools for SQL Server Compact 4.0 SP1 ENU  4.0.8876.1  
Microsoft Visual Studio Professional 2012                              11.0.50727  
Microsoft Visual Studio Professional 2012 - ENU                        11.0.50727  
Microsoft SQL Server Data Tools – Database Projects – Web installer... 10.3.20116.0  
Microsoft SQL Server Data Tools - enu (11.1.50318.0)                   11.1.50318.0  
Microsoft SQL Server Data Tools Build Utilities - enu (11.1.40403.0)   11.1.40403.0  

PATH 中没有 msbuild。

编辑: 组件列表使用 PowerShell 编写脚本。我只是注意到程序和功能中的实际列表更短。只有一个 Visual Studio 2012 Professional。

【问题讨论】:

问题可能不是你的一些竹代理安装了 Visual Studio,而其他的没有? 此构建计划始终在一台专用机器上运行。 【参考方案1】:

我将 Bamboo 任务修改为不调用 msbuild 可执行文件而是运行这样的脚本:

    ECHO Setting variables
    CALL "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat"

    ECHO Starting msbuild.exe
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe .\SVN_CHECKOUT\Databases\Databases.sln /fileLoggerParameters:LogFile=".\msbuild.log.txt" /p:Configuration=Release /consoleloggerparameters:ErrorsOnly;Verbosity=quiet;Summary /m

到目前为止它有效。

【讨论】:

以上是关于Bamboo 随机运行不同版本的 msbuild.exe 并构建失败的主要内容,如果未能解决你的问题,请参考以下文章

MSBuild + Bamboo 部署:构建一次并进行多次部署?

在 Bamboo 上使用 MSBuild 构建解决方案时遇到问题

如何让 Bamboo 文物收集整个文件夹?

当失败的测试被转移到隔离区时,防止 Bamboo 工作失败

生成随机发布名竹

如何编写一个从另一个 Bamboo 计划获取内部版本号的新 Bamboo 计划?