MSBuild 使用任務、目標和工具的工具集以生成應用程序。 通常,MSBuild 工具集包括 microsoft.common.tasks 文件、microsoft.common.targets 文件以及編譯器(如 csc.exe 和 vbc.exe)。 大多數工具集可用於將應用程序編譯為多個版本的 .NET Framework 以及多個係統平台。 但 MSBuild 2.0 工具集僅可用於麵向 .NET Framework 2.0。
在項目文件中 Project 元素的 ToolsVersion 特性中指定工具集。 下麵的示例指定應使用 MSBuild 12.0 工具集來生成項目。
複製
<Project ToolsVersion="12.0" ... </Project>
當你在 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 文件。
複製
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
可通過定義自定義工具集來修改 MSBuildToolsPath 的值。 有關詳細信息,請參閱標準和自定義工具集配置。
當在命令行上生成解決方案並為 msbuild.exe 指定 ToolsVersion 時,所有項目及其項目到項目的依賴項均基於該 ToolsVersion 生成,即便解決方案中的每個項目都指定了自己的 ToolsVersion 也是如此。 若要針對每個項目定義 ToolsVersion 值,請參閱重寫 ToolsVersion 設置。
ToolsVersion 特性也用於項目移植。 例如,如果你在 Visual Studio 2010 中打開 Visual Studio 2008 項目,則該項目文件將更新以包括 ToolsVersion=“4.0”。 如果你此時嚐試在 Visual Studio 2008 中打開該項目,由於它不會識別已升級的 ToolsVersion,因此它會按照該特性設置為 3.5 的情況生成該項目。
Visual Studio 2010 和 Visual Studio 2012 使用的 ToolsVersion 為 4.0。 Visual Studio 2013 使用的 ToolsVersion 為 12.0。 在許多情況下,無需修改即可在 Visual Studio 的所有三個版本中打開該項目。 Visual Studio 始終會使用正確的工具集,但是會在使用的版本與項目文件中的版本不匹配時通知你。 在幾乎所有情況下,此警告是良性的,因為工具集在大多數情況下都兼容。
子工具集(將在本主題後麵部分介紹)允許 MSBuild 根據運行生成所在的上下文自動切換要使用的工具集。 例如,當 MSBuild 在 Visual Studio 2012 中運行時,它將使用比在 Visual Studio 2010 中運行時更新的工具集,而且你無需顯式更改項目文件。 有關詳細信息,請參閱如何:修改項目係統,以便項目在 Visual Studio 的多個版本加載。
通過選擇組成某個工具集的各種工具、目標以及任務的路徑來實現該工具集。 MSBuild 定義的工具集中的工具來自以下源:
.NET Framework 文件夾。
其他托管工具。
這些托管工具包括 ResGen.exe 和 TlbImp.exe。
MSBuild 提供了兩種方式來訪問工具集:
使用工具集屬性
使用 ToolLocationHelper 方法
工具集屬性指定工具的路徑。 MSBuild 使用項目文件中的 ToolsVersion 屬性的值以查找相應的注冊表項,然後使用該注冊表項中的信息來設置工具集屬性。 例如,如果 ToolsVersion 的值為 12.0,則 MSBuild 將根據以下注冊表項設置工具集屬性:HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0。
這些是工具集屬性:
MSBuildToolsPath 指定 MSBuild 二進製文件的路徑。
SDK40ToolsPath 為 MSBuild 4.x(可以是 4.0 或 4.5)指定其他托管工具的路徑。
SDK35ToolsPath 為 MSBuild 3.5 指定其他托管工具的路徑。
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 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
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載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
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載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
立即下載