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 元素,會指定目標所執行的工作。 也可能包含 PropertyGroup 、ItemGroup 、ItemDefinitionGroup 和使用者定義的 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
屬性
根據預設,目前專案的平臺特定設定會覆寫 PATH
、 INCLUDE
、 LIB
、 LIBPATH
、 CONFIGURATION
和 PLATFORM
環境變數。 將 UseEnv
屬性設定為 true
,以確保不會覆寫環境變數。
msbuild myProject.vcxproj /p:UseEnv=true
目標
Visual Studio 支援檔案中有數百個目標。 不過,大部分都是使用者可忽略的系統導向目標。 大部分的系統目標前面都會加上底線 (_
),或具有開頭 PrepareFor
為 、、 Compute
、 Before
、 After
、 Pre
或 Post
的名稱。
下表列出數個有用的使用者導向目標。
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
任務