C# 如何更新应用程序中每个.csproj文件中的ToolVersion

C# 如何更新应用程序中每个.csproj文件中的ToolVersion,c#,.net,visual-studio,msbuild,visual-studio-2017,C#,.net,Visual Studio,Msbuild,Visual Studio 2017,我们有一个VisualStudio2013项目,它的.csproj是这样的 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(

我们有一个VisualStudio2013项目,它的.csproj是这样的

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

最近,我们将解决方案迁移到Visual Studio 2017,但不知何故,工具版本保持不变

我正在使用TeamCity构建我的项目&在TeamCity服务器上,我们只有MS构建版本14。如果使用它生成应用程序,则会出现以下错误:
未找到导入的项目“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets”。确认声明中的路径正确,并且文件存在于磁盘上。


更新工具版本最简单的方法是.csproj?如果我手动更新它,会导致任何问题吗?一旦我做了此更改,是否还有其他设置/配置需要更改?

ToolsVersion
不是导致此问题的主要原因,因此您可以随意手动更改它。对于VS2013的项目,其工具版本应该是
12.0
,而不是
4.0

VS2013=>12.0,VS2017=>15.0,VS2015=>14.0:
因此您现在有一个项目从VS2012迁移到VS2017,现在您使用VS2015的msbuild来构建它。对于这种情况,以下是一些可能有帮助的建议:

1.将ToolsVersion更改为12.0(或14.0)。这实际上有点效果

2.确保已在服务器中为msbuild 14.0安装了web应用程序工作负载。如果您的msbuild 14.0来自VS2015,请检查是否可以在其中创建新的web应用程序项目,这样您就知道是否已在VS中安装了web工作负载!(缺少的目标来自web应用程序工作负载,类似问题请参见。)

如果可以在
C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications
中找到丢失的文件,请在teamcity中配置MSBuild命令时尝试将其传递给
/p:VisualStudioVersion=14.0

3.最推荐的方法是从更高的VS版本安装msbuild。MSbuild具有针对VS2017和VS2019的独立软件包。(针对VS2017或VS2019的构建工具)

您可以找到他们的下载链接,请参阅VS类别的工具。您可以在服务器中安装此包(启用与web相关的工作负载!)(您不需要安装整个VS IDE),然后可以从
C:\Program Files(x86)\Microsoft Visual Studio\2019\BuildTools\msbuild\Current\Bin
C:\Program Files(x86)调用
msbuild.exe
\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin
在teamcity中生成当前项目


注意:MSBuild from higher-VS-version始终可以从早期的VS-version生成项目,但MSBuild from-previous有时无法识别来自更高VS-version的项目。因此,建议使用msbuild 15.0从VS2017生成项目,而不是使用msbuild 14.0。

再次运行VS2017安装程序,确保选择正确的工作负载。支持ASP.NET web项目是一个选项。@vendettamit:更新了问题Hi friend,有关于此问题的更新吗?请登录查看问题是否仍然阻碍您:)@LanceLi MSFT:谢谢您的跟进。我正试图与我们的infra团队合作,以进行所需的更改。我很快会通知你的,不客气。任何更新请随时告诉我们:)谢谢您的回复。我一直试图从下载MSBuild,但它提供了一个在线版本。我需要脱机版本。如果您需要脱机版本,您可以从此处获取有用的信息:。让我知道它是否有用:)