【问题标题】:MSBuild looking in wrong place for Microsoft.VisualBasic.Core.targetsMSBuild 在错误的地方寻找 Microsoft.VisualBasic.Core.targets
【发布时间】:2020-02-26 21:40:04
【问题描述】:

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

[22:14:32][someproject.vbproj] 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\bin\Microsoft.VisualBasic.CurrentVersion.targets(322, 5): 
error MSB4019: The imported project 
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.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.

注意第三行“导入的项目”之后的路径。错误是正确的;该文件夹确实存在,但该文件在那里不存在。然而,Microsoft.VisualBasic.Core.targets 文件确实存在于稍微不同的路径

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\Microsoft.VisualBasic.Core.targets

是否有一个简单的解决方法,也许是一个告诉 MSBuild 去哪里查找的注册表项?

【问题讨论】:

  • 手动将第二个文件夹的内容复制到第一个文件夹确实使构建工作(或者至少克服了那个错误;我还有其他错误要解决)。
  • 根据teamcity-support.jetbrains.com/hc/en-us/community/posts/…之类的帖子,严格来说是TeamCity问题,你没有使用正确的标签,并且调查的方向也错误。
  • @LexLi 您回复了一个链接,指向一篇已有一年多的帖子,关于不同版本的 TeamCity。虽然您声明答案包含在您链接到的“类似”的帖子中可能包含对我的问题的实际答案,但您的实际链接对我来说完全没用。 “朝错误的方向调查”也没有任何意义。非常感谢您提供正确的标签。
  • 你还在用VS2017,它也不是新的。我使用链接的帖子向您展示了要挖掘罪魁祸首,您应该关注 TeamCity 代理配置,尤其是它如何检测 MSBuild。在您的机器上,安装了两个 VS 2017 副本,专业版和原始构建工具。您没有为 Professional 安装 VB 位,而为 Build Tools 安装了,所以当 TeamCity 更喜欢 Professional 时,问题就发生了。要解决此问题,您要么强制 TeamCity 使用构建工具,要么将 VB 添加到 VS Pro 安装中。它们都不是“容易修复”或注册表黑客。
  • @LexLi 虽然我同意 VS2017 不是新的,但实际上您最新回复中的所有内容都是新的——对于本次讨论。您之前的消息或链接中均未显示任何内容,感谢您抽出宝贵时间提供此信息。如果您将该评论提升为答案,那么我会接受它。

标签: msbuild teamcity visual-studio-2017-build-tools


【解决方案1】:

原因

  • 在您的机器上,安装了两个 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

【讨论】:

  • 谢谢!有了这个提示,我能够回到工作代理,提取他们的安装配置,并使用它来修复新代理上的 VS Pro 安装。我所有适用于旧代理的构建配置现在都适用于新代理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多