如何让我的项目同时使用 v15.0 和 v15.9 构建工具?

How can I make my project work with both v15.0 and v15.9 build tools?

我们有两个构建服务器,一个新创建的项目决定它只想在其中一个上成功构建。它在失败的构建服务器上给出此错误:

MyLovelyNewProject.csproj(380,11): error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" was not found. Also, tried to find "WebApplications\Microsoft.WebApplication.targets" in the fallback search path(s) for $(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" . These search paths are defined in "C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin\amd64\MSBuild.exe.Config". Confirm that the path in the declaration is correct, and that the file exists on disk in one of the search paths.

我们的 DevOps 人员调查并确定一台服务器具有 v15.0 构建工具,其中一台具有 v15.9 构建工具。新项目无法在具有 v15.9 构建工具的服务器上构建,因为它专门寻找 v15.0 构建工具。

我们所有其他项目在两个构建服务器上都构建得很好,但我无法在他们的 .sln 或 .csproj 文件中找到任何看起来与新项目不同的内容。 如何 retarget/reconfigure 新项目,以便无论给定服务器具有哪个版本的构建工具,它都能成功构建?

(如果你想建议 DevOps 同步构建服务器以拥有相同版本的构建工具,我同意!唉,他们正忙于主要的服务器迁移,我希望新项目能够在 CI 中没有 50% 的机会在他们绕过它时失败。)

我认为问题与 Build Tool v15.9 有关,而不是您的项目。在该服务器上,您没有在 V15.9 Build Tool 上安装 Web 项目的构建工作负载,因此它无法指定 Web 项目并且缺乏构建 Web 项目的能力。或者,构建工具由于某些原因损坏。

您可以尝试以下步骤:

1)尝试打开vs_installer,点击修改

selectWeb开发构建工具工作量要安装,另外,如果你有aspnet core web项目,不要忘记安装.Net Core 构建工具 工作负载。

为了 确保这一点,我删除了 web 开发构建工具 工作负载,并在 web 项目中遇到了同样的问题。

2)如果没有帮助,请点击修复 for Build Tool V15.9修复它。