我正在尝试设置一个新的 TeamCity 代理。
我的新代理正在调用:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe
现有代理正在调用:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\AMD64\CL.exe
就我而言,现有代理正在做正确的事情,因为它们都是 64 位主机并构建 64 位二进制文件。两者都使用相同的参数调用 msbuild(删除了细节以保护无辜者): C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe (xxxx.sln /clp:PerformanceSummary /p:Configuration=Release / p:平台=x64)
我找到了这个博客: http: //blogs.msdn.com/b/aaronhallberg/archive/2007/07/16/msbuild-property-evaluation.aspx,它解释了 msbuild 如何评估属性。但我不知道使用哪些属性来决定这些工具。
您可能想知道我为什么关心工具选择。在任何一种情况下,CL 调用都会成功(您可以在 64 位窗口下运行 32 位编译)。但是在新代理上,我在预编译头文件中出现错误“预编译头文件来自先前版本的编译器,或者预编译头文件是 C++,而您正在从 C 中使用它(反之亦然)” - 并且预编译的头文件正在被同一个 AMD64\CL.exe 使用。
因此,如果有人知道 msbuild 实际使用了哪些道具,它将帮助我弄清楚这一点。
作为旁注,我在我的工作站上的 VC++ 目录、可执行目录下的 Visual Studio 项目属性页中看到了交叉编译器 (x86_amd64\CL.exe)。这是Win 7,64位。它说它是继承的,我还没有自定义 msbuild 道具(在 C:\Users\bdelavega\AppData\Local\Microsoft\MSBuild\v4.0 中)。为什么会是默认值?