在 Bamboo 中 运行 时不同的 .NET 构建结果
Different .NET build result when run in Bamboo
我正在使用 Atlassian Bamboo 构建 .net 4.5.2 应用程序。该构建在 Telerik.Windows.Controls.Data
的依赖项下运行良好已有数周时间。
在最近的功能分支上,我添加了对 Telerik.Windows.Controls.GridView.dll
版本 2015.3.1104.45 的依赖。现在构建失败了。
warning MSB3245: Could not resolve this reference. Could not locate
the assembly "Telerik.Windows.Controls.GridView,
Version=2015.3.1104.45, Culture=neutral,
PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL". Check to
make sure the assembly exists on disk. If this reference is required
by your code, you may get compilation errors. 24-Dec-2015 08:11:23
error MC3074: The tag 'RadGridView' does not exist in XML namespace
'http://schemas.telerik.com/2008/xaml/presentation'. Line 55 Position
18.
按照构建失败时的传统做法,我遵循了以下分类步骤:
- 检查有问题的提交并在我的工作站上测试构建
- 如果 "works on my machine™",请登录构建服务器并使用失败的工作目录测试构建
我在 visual studio 2015 IDE 构建了两个步骤。在这种情况下 - 两个构建都成功。令人沮丧!所以我进入命令行并使用 Bamboo 执行的命令行构建解决方案:
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com" "SolutionNameRedacted.sln" /rebuild Release
这也成功了!
我注意到 bamboo 日志中的以下行:
24-Dec-2015 08:10:23
C:\Atlassian\Data\Bamboo\xml-data\build-dir\CS-CC13-JOB1>call
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
amd64 24-Dec-2015 08:10:23 '"C:\Program Files (x86)\Microsoft Visual
Studio 14.0\VC\vcvarsall.bat"' is not recognized as an internal or
external command,
此批处理文件用于指定编译器工具集。是找不到的问题吗?我一直假设编译器偏好是由项目文件表达的。我检查了 Microsoft Visual Studio 14.0
目录,vcvarsall.bat 不存在。
csproj 文件自上次构建以来的唯一重大变化是添加了以下行:
<Reference Include="Telerik.Windows.Controls.GridView, Version=2015.3.1104.45, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL" />
我有点不知所措,因为它导致交货大幅下滑。
我目前的理论是这是一个用户帐户问题,bamboo 无法访问它需要的 Telerik 程序集。我的下一步也是:
- 引用 xaml 文件中使用
clr-namespace
的程序集
- 在具有更高权限的用户帐户上测试构建(遗憾的是我没有那种访问权限)
事实证明,Telerik 没有将他们的二进制文件安装到 GAC。 Visual Studio 需要 csproj 文件中的 <hintpath>
条目以帮助发现。这个路径应该是你的安装目录。
这听起来像个废话吗?这是 abd 我并没有留下深刻的印象。值得庆幸的是,Telerik VS Extension 将为您添加参考和提示路径。我的建议是始终使用此向导。
缺点 - 您的所有开发人员都需要将 Telerik 库安装在同一文件夹中。我很确定您可以通过 GAC 手动注册二进制文件来避免这种情况。
我正在使用 Atlassian Bamboo 构建 .net 4.5.2 应用程序。该构建在 Telerik.Windows.Controls.Data
的依赖项下运行良好已有数周时间。
在最近的功能分支上,我添加了对 Telerik.Windows.Controls.GridView.dll
版本 2015.3.1104.45 的依赖。现在构建失败了。
warning MSB3245: Could not resolve this reference. Could not locate the assembly "Telerik.Windows.Controls.GridView, Version=2015.3.1104.45, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 24-Dec-2015 08:11:23
error MC3074: The tag 'RadGridView' does not exist in XML namespace 'http://schemas.telerik.com/2008/xaml/presentation'. Line 55 Position 18.
按照构建失败时的传统做法,我遵循了以下分类步骤:
- 检查有问题的提交并在我的工作站上测试构建
- 如果 "works on my machine™",请登录构建服务器并使用失败的工作目录测试构建
我在 visual studio 2015 IDE 构建了两个步骤。在这种情况下 - 两个构建都成功。令人沮丧!所以我进入命令行并使用 Bamboo 执行的命令行构建解决方案:
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com" "SolutionNameRedacted.sln" /rebuild Release
这也成功了!
我注意到 bamboo 日志中的以下行:
24-Dec-2015 08:10:23 C:\Atlassian\Data\Bamboo\xml-data\build-dir\CS-CC13-JOB1>call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 24-Dec-2015 08:10:23 '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"' is not recognized as an internal or external command,
此批处理文件用于指定编译器工具集。是找不到的问题吗?我一直假设编译器偏好是由项目文件表达的。我检查了 Microsoft Visual Studio 14.0
目录,vcvarsall.bat 不存在。
csproj 文件自上次构建以来的唯一重大变化是添加了以下行:
<Reference Include="Telerik.Windows.Controls.GridView, Version=2015.3.1104.45, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL" />
我有点不知所措,因为它导致交货大幅下滑。
我目前的理论是这是一个用户帐户问题,bamboo 无法访问它需要的 Telerik 程序集。我的下一步也是:
- 引用 xaml 文件中使用
clr-namespace
的程序集 - 在具有更高权限的用户帐户上测试构建(遗憾的是我没有那种访问权限)
事实证明,Telerik 没有将他们的二进制文件安装到 GAC。 Visual Studio 需要 csproj 文件中的 <hintpath>
条目以帮助发现。这个路径应该是你的安装目录。
这听起来像个废话吗?这是 abd 我并没有留下深刻的印象。值得庆幸的是,Telerik VS Extension 将为您添加参考和提示路径。我的建议是始终使用此向导。
缺点 - 您的所有开发人员都需要将 Telerik 库安装在同一文件夹中。我很确定您可以通过 GAC 手动注册二进制文件来避免这种情况。