重写 ToolsVersion 设置

更新:2007 年 11 月

通过使用 /ToolsVersion 开关(或缩写形式 /tv)或 $(ProjectToolsVersion) 属性可以重写项目文件中的 ToolsVersion 设置,例如,这样便可使用与其他项目不同的工具集版本在解决方案中生成项目。也可以使用 ToolsVersion 任务参数重写 MSBuild 任务的 ToolsVersion。

有关 ToolsVersion 的更多信息,请参见使用 MSBuild 以特定的 NET Framework 为目标

在命令行生成中重写项目的 ToolsVersion 设置

虽然 Visual Studio 2008 项目通常使用在项目文件中指定的 ToolsVersion 生成,但也可以在命令行中使用 /ToolsVersion(或 /tv)开关来重写该值,并用不同的工具集来生成所有项目及其项目到项目依赖项。例如:

C:\windows\microsoft.net\framework\v3.5>msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug

在此示例中,所有项目均使用 ToolsVersion 3.5 生成。(但请参见本主题后面的“优先级顺序”一节。)

在命令行中使用 /tv 开关时,可以选择在个别项目中使用 $(ProjectToolsVersion) 属性,以使用与解决方案中的其他项目不同的 ToolsVersion 值来生成这些项目。

使用 MSBuild 任务的 ToolsVersion 参数重写 ToolsVersion 设置

MSBuild 任务是一个项目生成另一个项目的主要方式。为了使 MSBuild 任务能够使用与项目中指定的值不同的 ToolsVersion 来生成项目,它提供了名为 ToolsVersion 的可选任务参数。下面是其用法示例:

<MSBuild Projects="MyProject1" 
         Targets="Build" 
         Properties="Configuration=Debug" 
         ToolsVersion="2.0">
    <Output TaskParameter="TargetOutputs" ItemName="Outputs" /> 
</MSBuild>

优先级顺序

优先级顺序,由高至低,用来确定生成项目时所用的 ToolsVersion:

  1. 用于生成项目的 MSBuild 任务的 ToolsVersion 属性(如果有)。

  2. msbuild.exe(如果有)中使用的 /tv 开关。(与外部 msbuild 任务类似。)

  3. 项目文件 ToolsVersion 属性。

  4. 配置文件中的默认工具版本。

  5. 注册表中的默认工具版本。

数字 1、2 和 3 与下列属性相同:

  • MSBuild 任务的 Properties 属性 (Attribute)

  • msbuild.exe 中的 /p: 开关

  • 项目文件中的属性标记

如果在命令行中生成时不为 /ToolsVersion 指定值,Visual Studio 2005 解决方案将使用 ToolsVersion 值“2.0”来生成,Visual Studio 2008 解决方案将使用 ToolsVersion 值“3.5”来生成。

请参见

其他资源

MSBuild 概念

为特定的 .NET Framework 生成项目