重写 ToolsVersion 设置
通过使用 /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:
用于生成项目的 MSBuild 任务的 ToolsVersion 特性(如果有)。
msbuild.exe(如果有)中使用的 /tv 开关。 (与外部 msbuild 任务类似。)
项目文件 ToolsVersion 特性。
配置文件中的默认工具版本。
注册表中的默认工具版本。
数字 1、2 和 3 与下列属性相同:
MSBuild 任务的 Properties 特性
msbuild.exe 中的 /p: 开关
项目文件中的属性标记
如果在命令行中生成时不为 /ToolsVersion 指定值,Visual Studio 2005 解决方案将使用 ToolsVersion 值“2.0”来生成,Visual Studio 2008 解决方案将使用 ToolsVersion 值“3.5”来生成。