共用方式為


C++ 專案的 MSBuild 內部項目

當您在 IDE 中設定專案屬性,然後儲存專案時,Visual Studio 會將專案設定寫入至您的專案檔。 項目檔包含您專案唯一的設定。 不過,它不包含建置專案所需的所有設定。 項目檔包含包含 Import 其他 支援檔案網路的專案。 支援檔案包含建置專案所需的其餘屬性、目標和設定。

支援檔案中大部分的目標和屬性的唯一用途皆為實作建置系統。 本文討論您可以在 MSBuild 命令行上指定的實用目標和屬性。 若要探索更多目標和屬性,請瀏覽支援檔案目錄中的檔案。

支援檔案目錄

根據預設,主要的 Visual Studio 支援檔案會位於下列目錄中。 這項資訊是版本特定的。

Visual Studio 2022 和 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    包含目標所使用的主要目標檔案 (.targets) 和屬性檔 (.props)。 根據預設, $(VCTargetsPath) 巨集會參考此目錄。 占 <version> 位元是指Visual Studio版本:適用於Visual Studio 2022的 v170、Visual Studio 2019 的 v160 或Visual Studio 2017 的 v150。

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    包含平台特定的目標和屬性檔案,會覆寫其上層目錄中的目標和屬性。 此目錄也包含一個 DLL,會定義此目錄中的目標所使用的工作。 佔 <platform> 位元代表ARM、ARM64、Win32或 x64子目錄。

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    包含目錄,可讓組建使用指定的 <toolset>來產生C++應用程式。 佔 <platform> 位元代表ARM、ARM64、Win32或 x64子目錄。 佔 <toolset> 位元代表工具組子目錄。

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    包含目標所使用的主要目標檔案 (.targets) 和屬性檔 (.props)。 根據預設, $(VCTargetsPath) 巨集會參考此目錄。

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    包含平台特定的目標和屬性檔案,會覆寫其上層目錄中的目標和屬性。 此目錄也包含一個 DLL,會定義此目錄中的目標所使用的工作。 佔 <platform> 位元代表ARM、ARM64、Win32或 x64子目錄。

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    包含目錄,可讓組建使用指定的 <toolset>來產生C++應用程式。 佔 <platform> 位元代表ARM、Win32或 x64 子目錄。 佔 <toolset> 位元代表工具組子目錄。

Visual Studio 2015 和更早版本

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    包含目標所使用的主要目標檔案 (.targets) 和屬性檔 (.props)。 根據預設,$(VCTargetsPath) 巨集會參考這個目錄。

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    包含平台特定的目標和屬性檔案,會覆寫其上層目錄中的目標和屬性。 此目錄也包含一個 DLL,會定義此目錄中的目標所使用的工作。 佔 <platform> 位元代表ARM、Win32或 x64 子目錄。

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    包含目錄,可讓組建使用指定的 <toolset>來產生C++應用程式。 占 <version> 位元為 V110 for Visual Studio 2012、V120 for Visual Studio 2013 和 V140 for Visual Studio 2015。 佔 <platform> 位元代表ARM、Win32或 x64 子目錄。 佔 <toolset> 位元代表工具組子目錄。 例如,它是使用Visual Studio 2015 工具組建置 Windows 應用程式的 v140。 或者,v120_xp使用Visual Studio 2013工具組為 Windows XP 建置。

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    讓組建產生 Visual Studio 2008 或 Visual Studio 2010 應用程式的路徑不包含 <version>。 在這些版本中, <platform> 佔位符代表Itanium、Win32 或 x64 子目錄。 佔 <toolset> 位元代表 v90 或 v100 工具組子目錄。

支援檔案

支援檔案目錄包含具有下列副檔名的檔案:

副檔名 描述
.targets 包含 Target XML 元素,會指定目標所執行的工作。 也可能包含 PropertyGroupItemGroupItemDefinitionGroup 和使用者定義的 Item 元素,用來檔案和命令列選項指派給工作參數。

如需詳細資訊,請參閱 Target 元素 (MSBuild)
.props 包含 Property Group 和使用者定義的 Property XML 元素,會指定在建置期間使用的檔案和參數設定。

也可能包含指定其他設定的 ItemDefinitionGroup 和使用者定義 Item XML 元素。 在專案定義群組中定義的項目類似於屬性,但無法從命令行存取。 Visual Studio 專案檔通常會使用項目來代表設定,而不是使用屬性。

如需詳細資訊,請參閱 Element (MSBuild)ItemDefinitionGroup Element (MSBuild)Item Element (MSBuild)ItemGroup
.xml 包含宣告和初始化 IDE 使用者介面元素的 XML 元素。 例如,屬性表、屬性頁、文本框控件和 listbox 控制件。

這些 .xml 檔案直接支援 IDE,而不是 MSBuild。 不過,IDE 屬性的值會指派給組建屬性和項目。

大部分 .xml 的檔案都位於地區設定特定的子目錄中。 例如,英文-美國區域的檔案位於 $(VCTargetsPath)\1033\中。

使用者目標和屬性

若要有效地使用 MSBuild,它有助於知道哪些屬性和目標很有用且相關。 大部分的屬性和目標都有助於實作Visual Studio建置系統,且與用戶無關。 本節說明值得瞭解的用戶導向屬性和目標。

PlatformToolset 屬性

PlatformToolset 屬性會決定要在組建中使用的 MSVC 工具組。 依預設會使用目前的工具組。 設定這個屬性時,其值會與常值字串串連,以形成路徑。 此目錄包含建置特定平台專案所需的屬性和目標檔案。 必須安裝平台工具組,才能使用該平台工具組版本來建置。

例如,將 PlatformToolset 屬性設為 v140,會使用 Visual Studio 2015 工具和程式庫來建置您的應用程式:

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture 屬性

PreferredToolArchitecture 屬性會決定要在組建中使用 32 位元還是 64 位元編譯器和工具。 此屬性不會影響輸出平台架構或組態。 根據預設,如果未設定此屬性,MSBuild 會使用 x86 版本的編譯程式和工具。

例如,將 PreferredToolArchitecture 屬性設為 x64,會使用 64 位元編譯器和工具來建置您的應用程式:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv 屬性

根據預設,目前專案的平臺特定設定會覆寫 PATHINCLUDELIBLIBPATHCONFIGURATIONPLATFORM 環境變數。 將 UseEnv 屬性設定為 true ,以確保不會覆寫環境變數。

msbuild myProject.vcxproj /p:UseEnv=true

目標

Visual Studio 支援檔案中有數百個目標。 不過,大部分都是使用者可忽略的系統導向目標。 大部分的系統目標前面都會加上底線 (_),或具有開頭 PrepareFor為 、、 ComputeBeforeAfterPrePost的名稱。

下表列出數個有用的使用者導向目標。

Target 描述
BscMake 執行Microsoft瀏覽資訊維護公用程式工具 bscmake.exe
Build 建置專案。

此目標是項目的預設值。
ClCompile 執行 MSVC 編譯程式工具 。 cl.exe
Clean 刪除暫存檔和中繼組建檔案。
Lib 執行 Microsoft 32 位連結庫管理員工具 lib.exe
Link 執行 MSVC 連結器工具 link.exe
ManifestResourceCompile 從指令清單擷取資源清單,然後執行 Microsoft Windows 資源編譯程式工具 rc.exe
Midl 執行 Microsoft 介面定義語言 (MIDL) 編譯程式工具 midl.exe
Rebuild 清除並建置您的專案。
ResourceCompile 執行 Microsoft Windows 資源編譯程式工具 rc.exe
XdcMake 執行 XML 檔案工具 xdcmake.exe
Xsd 執行 XML 架構定義工具 xsd.exe 請參閱附注。

注意

在 Visual Studio 2017 和更新版本中,C++檔案的項目支援 .xsd 已被取代。 您仍然可以手動將 新增CppCodeProvider.dll至 GAC 來使用Microsoft.VisualC.CppCodeProvider

另請參閱

MSBuild 工作參考
BscMake 任務
CL 任務
CPPClean 任務
LIB 任務
Link 任務
MIDL 任務
MT 任務
RC 任務
SetEnv 任務
VCMessage 任務
XDCMake 任務