C# .NET项目中的ToolsVersion规范

C# .NET项目中的ToolsVersion规范,c#,.net,csproj,C#,.net,Csproj,我看到一些C#项目注意到了他们的工具版本,而其他项目则没有。(例如ToolsVersion=“15.0”) 最佳做法是什么?这也是显式优于隐式的情况吗?在区分全局MSBuild安装中并排安装的工具版本时,“ToolsVersion”属性最有用 从VS 2017开始,不再有全局MSBuild安装,ToolsVersion的重要性降低了 在VS 2019中,他们引入了一个当前版本,旨在取代对实际版本号的需求,而不会中断太多的使用(例如,您将看到包含名为当前的文件夹的路径),并确保项目和扩展更容易更新

我看到一些C#项目注意到了他们的工具版本,而其他项目则没有。(例如ToolsVersion=“15.0”)

最佳做法是什么?这也是显式优于隐式的情况吗?

在区分全局MSBuild安装中并排安装的工具版本时,“ToolsVersion”属性最有用

从VS 2017开始,不再有全局MSBuild安装,
ToolsVersion
的重要性降低了

在VS 2019中,他们引入了一个
当前
版本,旨在取代对实际版本号的需求,而不会中断太多的使用(例如,您将看到包含名为
当前
的文件夹的路径),并确保项目和扩展更容易更新到新版本而不会中断


因此,只要使用VS(2017、2019)的最新版本,就不需要指定
工具版本
,尤其是在为.NET Core或.NET Standard编写项目时。

我确信每个.NET项目都需要定义它用于构建和编译的MSBuild工具集的版本。但是有些项目类型使用
sdk
属性,而不是microsoft docs文章指出的
ToolsVersion
,如果该项目将在不同的VS版本上运行,这是否会导致不一致?取决于项目类型。例如,有VS 2010 web项目,当更新的VS看到旧的ToolsVersion时,将执行更新。对于VS 2017+中的新项目,应该不再重要了。很高兴知道。使用
ToolsVersion=“14.0”
加载旧的(非托管)项目,并将其替换为
ToolsVersion=“16.0”
。在这两种情况下都没有警告,并且似乎构建了相同的警告。