MSBuild 使用任务、目标和工具的工具集以生成应用程序。通常,MSBuild 工具集包括 microsoft.common.tasks 文件、microsoft.common.targets 文件以及编译器(如 csc.exe 和 vbc.exe)。大多数工具集可用于将应用程序编译为多个版本的 .NET Framework 以及多个系统平台。但 MSBuild 2.0 工具集仅可用于面向 .NET Framework 2.0。
当你在 Visual Studio 中创建项目或更新现有项目时,名为ToolsVersion的特性将自动包括在项目文件中,并且其值对应于包括在 Visual Studio 版本中的 MSBuild 版本。有关详细信息,请参阅面向特定的 .NET Framework 版本或配置文件。
当ToolsVersion值在项目文件中定义时,MSBuild 将使用该值来确定在该项目中可用的工具集属性的值。其中一个工具集属性为$(MSBuildToolsPath),该属性指定 .NET Framework 工具的路径。仅该工具集属性(或$(MSBuildBinPath))是必需的。
从 Visual Studio 2013 开始,MSBuild 工具集版本号与 Visual Studio 版本号相同。无论项目文件中指定哪个工具集版本,MSBuild 都会在 Visual Studio 中和命令行上默认使用该工具集。使用 /ToolsVersion 标志可重写此行为。有关详细信息,请参阅重写 ToolsVersion 设置。
在下面的示例中,MSBuild 将使用MSBuildToolsPath保留的属性查找 Microsoft.CSharp.targets 文件。
通过选择组成某个工具集的各种工具、目标以及任务的路径来实现该工具集。 MSBuild 定义的工具集中的工具来自以下源:
.NET Framework 文件夹。
其他托管工具。
这些托管工具包括 ResGen.exe 和 TlbImp.exe。
MSBuild 提供了两种方式来访问工具集:
使用工具集属性
使用 ToolLocationHelper 方法
工具集属性指定工具的路径。 MSBuild 使用项目文件中的 ToolsVersion 属性的值以查找相应的注册表项,然后使用该注册表项中的信息来设置工具集属性。 例如,如果 ToolsVersion 的值为 12.0,则 MSBuild 将根据以下注册表项设置工具集属性:HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0。
140.5M / 09-05
76.4M / 03-25
55M / 06-05
237.9M / 04-13
900.9M / 03-02
96.2M / 07-06
311.2M / 07-06
335M / 07-06
200M / 07-06
413.8M / 07-06
484.7M / 09-27
165.4M / 09-05
353.9M / 06-05
131.8M / 04-13
195.6M / 03-03
45.6M / 09-08
665.2M / 07-06
2.84G / 07-06
93M / 07-06
338.3M / 07-06
1.38G / 07-26
488.3M / 07-16
109.8M / 06-03
142M / 01-08
1.2M / 11-23
548.8M / 04-13
1.6M / 04-13
1.48G / 03-18
646.6M / 03-03
133.7M / 03-03
110.5M / 09-05
33.4M / 09-05
325.8M / 08-12
60M / 04-29
254M / 04-25
659M / 04-23
1M / 12-26
253.4M / 12-08
253M / 12-08
1.19G / 11-16
369M / 09-22
181.5M / 09-22
201.2M / 09-05
488.3M / 07-16
248.9M / 12-08
248.9M / 12-08
100.6M / 03-06
148.9M / 03-06
1.12G / 07-06
1.25G / 07-06
1.76G / 09-22
1.92G / 04-17
116.2M / 04-10
201.5M / 04-13
7.31G / 07-01
94.3M / 07-06
2.48G / 07-06
7.63G / 07-06
1M / 07-06
778.1M / 07-06
561.8M / 07-11
72M / 07-06
548.7M / 07-06
1.00G / 07-06
9.13G / 07-06
126.2M / 07-06
72M / 07-06
105.1M / 07-06
132M / 07-06
132M / 07-06