MSBuild 使用错误(平台)版本的 Tracker.exe

Posted

技术标签:

【中文标题】MSBuild 使用错误(平台)版本的 Tracker.exe【英文标题】:MSBuild using wrong (platform) version of Tracker.exe 【发布时间】:2015-12-04 04:09:32 【问题描述】:

我正在使用 VS2010 (pro) 和 VS2015 Express。

最近(可能是由于安装了一些其他软件)我所有的 32 位版本都开始失败了

TRACKER:错误 TRK0002:无法执行命令:“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe”@C:\Users....rsp”。句柄无效。

(64 位版本继续工作) 问题似乎是 MSBuild 调用了 64 位版本的 Tracker。 Google 告诉我,其他人遇到了相反的问题,即 64 位构建得到相同的错误,而 32 位构建成功

查看 procmon 我发现 MSBUILD (1) 打开注册表项 HKLM\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full 它的 InstallPath 值为

        C:\Windows\Microsoft.NET\Framework\v4.0.30319\  

(2) 尝试打开不存在的 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Tracker.exe (3) 打开registryKey HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools-x86 (虽然不存在,但 HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools-x86 确实) (4)打开文件 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64\Tracker.exe 这会产生上面的错误

我无法解释“x64”的存在,尤其是当 MSBuild 似乎正在寻找以 -86 结尾的注册表项中的文件路径时

来自http://community.sharpdevelop.net/forums/p/11439/31258.aspx 有一个解决方法可以通过添加禁用跟踪器 .vcxproj 文件中的属性组为“假”。 但这需要更改许多此类文件 欢迎任何建议

【问题讨论】:

【参考方案1】:

我已经能够通过确保 _IsNativeEnvironment 环境变量设置为 false 来解决相同的问题。

【讨论】:

以上是关于MSBuild 使用错误(平台)版本的 Tracker.exe的主要内容,如果未能解决你的问题,请参考以下文章

错误 MSB4019 - MSBUILD 正在寻找不存在版本的导入

TFSBuild 2013 无法更改 msbuild 版本

MSBUILD:错误MSB1009:项目文件不存在

怎样使用 MSBuild 自动编译和发布 NET 网站

VS 2017 - 带有版本信息(资源)的 C++ DLL 的 MSBuild 不起作用(致命错误 LNK1158:无法运行“cvtres.exe”)

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