0

我在 VS 2017 中有一个 C++ 项目。.vcxproj 文件中的工具版本为 15.0,而 .vcxproj.filters 中的工具版本为 4.0。

项目.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">

我无法弄清楚这些工具版本之间存在差异的原因。谁能解释一下。

4

1 回答 1

1

ToolsetVersion属性指定 MSBuild 工具集版本。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 属性 在项目文件中 Project 元素的 ToolsVersion 属性中指定工具集。上面的示例指定应使用 MSBuild 15.0 工具集构建项目。

ToolsVersion 属性的工作原理 在 Visual Studio 中创建项目或升级现有项目时,名为 ToolsVersion 的属性会自动包含在项目文件中,其值对应于 Visual Studio 版本中包含的 MSBuild 版本。

在项目文件中定义 ToolsVersion 值时,MSBuild 使用该值来确定项目可用的 Toolset 属性的值。一个工具集属性是$(MSBuildToolsPath),它指定 .NET Framework 工具的路径。只有那个 Toolset 属性(或$(MSBuildBinPath))是必需的。

于 2018-03-22T07:38:01.303 回答