MSBuild 在错误的位置查找 Microsoft.VisualBasic.Core.targets

MSBuild looking in wrong place for Microsoft.VisualBasic.Core.targets

我正在设置一个新的 TeamCity 构建代理。 运行 在现有代理上运行良好的几个构建配置在新代理上失败,出现如下错误(为清楚起见添加了空格):

[22:14:32][someproject.vbproj] 
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild.0\bin\Microsoft.VisualBasic.CurrentVersion.targets(322, 5): 
error MSB4019: The imported project 
"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild.0\bin\Roslyn\Microsoft.VisualBasic.Core.targets" 
was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

注意 "The imported project" 之后第三行的路径。错误是正确的;该文件夹确实存在,但该文件不存在。然而 Microsoft.VisualBasic.Core.targets 文件 确实 存在于稍微不同的路径

C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin\Roslyn\Microsoft.VisualBasic.Core.targets

是否有解决此问题的简单方法,也许是告诉 MSBuild 在哪里查找的注册表项?

原因

  • 在您的机器上,安装了两个 VS 2017 副本,专业版和原始构建工具。
  • 您没有为 Professional 安装 VB 位,而为 Build Tools 安装了
  • TeamCity 更喜欢专业版的 MSBuild。

综合以上,问题就出现了。

修复

您应该强制 TeamCity 使用 Build Tools 中的 MSBuild,或者将 VB 添加到您的 VS Pro 安装中。

参考

https://blog.lextudio.com/the-rough-history-of-msbuild-cc72a217fa98