我在VS 2017中有一个C ++项目。 .vcxproj文件中的工具版本是15.0而.vcxproj.filters是4.0。
Project.vcxproj: -
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Project.vcxproj.filters: -
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
我无法弄清楚这些工具版本之间存在差异的原因。 任何人都可以解释一下。
答案 0 :(得分:0)
ToolsetVersion
属性指定MSBuild Toolset版本。 Visual Studio 2010和Visual Studio 2012使用4.0的ToolsVersion。 Visual Studio 2013使用12.0的ToolsVersion。 Visual Studio 2015使用14.0的ToolsVersion。 Visual Studio 2017使用15.0的ToolsVersion。
默认情况下,位于15.0的MSBuild工具集位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0
ToolsVersion属性 在ToolsVersion中指定工具集 项目文件中Project元素的属性。以上 示例指定应使用。来构建项目 MSBuild 15.0工具集。
ToolsVersion属性如何工作 在Visual Studio中创建项目或升级现有项目时 项目,名为ToolsVersion的属性自动包含在 项目文件及其值对应于MSBuild的版本 它包含在Visual Studio版本中。
在项目文件中定义ToolsVersion值时,MSBuild会使用 该值用于确定Toolset属性的值 可用于该项目。一个工具集属性为
$(MSBuildToolsPath)
, 它指定.NET Framework工具的路径。只有这样 工具集属性(或$(MSBuildBinPath)
)是必需的。