问题描述
我们有两个构建服务器,一个新创建的项目决定只希望在其中一个上成功构建。它在失败的构建服务器上给出了这个错误:
MylovelyNewProject.csproj(380,11):错误 MSB4226:导入的项目“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.未找到 WebApplication.targets”。此外,尝试在 $(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" 的后备搜索路径中找到 "WebApplications\Microsoft.WebApplication.targets" 。这些搜索路径在“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\amd64\MSBuild.exe.Config”中定义。确认声明中的路径正确,并且该文件存在于磁盘上的搜索路径之一中。
我们的 DevOps 人员调查并确定一台服务器具有 v15.0 构建工具,其中一台具有 v15.9 构建工具。新项目无法在具有 v15.9 构建工具的服务器上构建,因为它专门寻找 v15.0 构建工具。
我们所有其他项目在两个构建服务器上都构建得很好,但我无法在他们的 .sln 或 .csproj 文件中找到与新项目不同的任何内容。 如何重新定位/重新配置新项目,以便无论给定服务器具有哪个版本的构建工具,它都能成功构建?
(如果你想建议 DevOps 同步构建服务器以拥有相同版本的构建工具,我同意!唉,他们正忙于大型服务器迁移,我希望新项目没有有 50% 的机会在 CI 中失败,而他们正在着手处理。)
解决方法
我认为该问题与 Build Tool v15.9 而不是您的项目有关。在该服务器上,您没有在 V15.9 Build Tool 上安装 Web 项目的构建工作负载,因此它无法指定 Web 项目并且缺乏构建 Web 项目的能力。或者,构建工具由于某些原因损坏。
您可以尝试以下步骤:
1)尝试打开vs_installer
,点击修改
并且选择Web development build tools工作量来安装,另外,如果你有一个asp net core web项目,不要忘记安装.Net Core build tools工作量.
为了确保这一点,我移除了网络开发构建工具工作负载,并为网络项目解决了同样的问题。
2)如果没有帮助,请点击修复Build Tool V15.9进行修复。