MSBuild 命令和屬性的通用巨集
視您的安裝選項而定,Visual Studio 可以在以 MSBuild 為基礎的 .vcxproj
Visual Studio 專案中提供數百個巨集。 巨集會對應至預設設定的 MSBuild 屬性,或是在 或 .targets
檔案中.props
,或在項目設定中。 您可以在接受字串的專案 [屬性頁] 對話方塊的任何位置使用這些巨集。 這些巨集不會區分大小寫。
檢視目前的屬性和巨集
若要顯示所有目前可用的巨集,請選取 [項目>屬性],從主功能表開啟專案屬性頁。 在 [ 屬性頁] 對話框中,選擇具有巨集的專案。 您可以透過圍繞其名稱的貨幣符號和括弧來辨識巨集。
例如,在左窗格中,選取 [組態屬性>VC++ 目錄],然後在右窗格中選取 [ 包含目錄]。 Include 目錄的值是 $(VC_IncludePath);$(WindowsSDK_IncludePath);
。
圍繞這兩個值的貨幣正負號和括弧表示它們是巨集。 這兩個巨集的展開會將 include 目錄設定為要搜尋。
選取 [包含目錄 ],下拉式清單會出現在數據列結尾。 選取下拉式清單按鈕,然後選取 [ 編輯]。 在出現的 [ 包含目錄 ] 對話框中,選取 [ 巨集]>> 按鈕。
這樣會展開對話框,以顯示 Visual Studio 可見的目前屬性和巨集集,以及每個物件的目前值。 如需詳細資訊,請參閱C++專案屬性頁參考的 <指定使用者定義值>一節。
右側是 Visual Studio 巨集的清單,例如 $(AllowLocalNetworkLoopback)。 左窗格會顯示 include 目錄屬性的評估值。 底部窗格會顯示哪些巨集已展開,如果有的話,以產生 include 目錄屬性值。 因為 Include Directory 巨集是另外兩個巨集的組合,$(VC_IncludePath)和 $(WindowsSDK_IncludePath),因此底部窗格標示為 [繼承的值],會列出這兩個巨集。
常見巨集的清單
下表描述可用巨集的常用子集;這裡沒有列出更多。 移至 [ 巨集] 對話框,以查看專案中的所有屬性及其目前值。 如需如何在、 和 檔案中.props
建立及使用 MSBuild 屬性定義做為巨集的詳細資訊,請參閱 MSBuild 屬性。.vcxproj
.targets
Macro | 描述 |
---|---|
$(Configuration) |
目前的專案設定名稱,例如 "Debug"。 |
$(DevEnvDir) |
Visual Studio 的安裝目錄(定義為磁碟驅動器 + 路徑):包含尾端反斜杠 (\)。 |
$(FrameworkDir) |
.NET Framework 安裝所在目錄。 |
$(FrameworkSDKDir) |
.NET Framework 安裝所在目錄。 .NET Framework 可能已安裝為 Visual Studio 的一部分或個別安裝。 |
$(FrameworkVersion) |
Visual Studio 使用的 .NET framework 版本。 結合 $(FrameworkDir) ,Visual Studio 所使用的 .NET Framework 版本完整路徑。 |
$(FxCopDir) |
檔案的路徑 fxcop.cmd 。 檔案 fxcop.cmd 未安裝在所有 Visual Studio 版本中。 |
$(IntDir) |
為中繼檔案指定的目錄路徑。 如果是相對路徑,中繼檔案會移至附加至專案目錄的這個路徑。 此路徑應具有尾端反斜杠 (\)。 它會解析為 Intermediate Directory 屬性的值。 請勿使用 $(OutDir) 來定義這個屬性。 |
$(OutDir) |
輸出檔案目錄的路徑。 如果是相對路徑,輸出檔案會移至附加至專案目錄的這個路徑。 此路徑應具有尾端反斜杠 (\)。 它會解析為 Output Directory 屬性的值。 請勿使用 $(IntDir) 來定義這個屬性。 |
$(Platform) |
目前的專案平台名稱,例如 "Win32"。 |
$(PlatformShortName) |
目前架構的簡短名稱,例如 「x86」 或 「x64」。 |
$(ProjectDir) |
項目目錄(定義為磁碟驅動器+ 路徑):包含尾端反斜杠 (\)。 |
$(ProjectExt) |
專案的副檔名。 副檔名前面有 '.'。 |
$(ProjectFileName) |
專案的檔案名稱 (定義為名稱 + 副檔名)。 |
$(ProjectName) |
專案的主檔名。 |
$(ProjectPath) |
專案的絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 |
$(PublishDir) |
發佈目標的輸出位置;包含尾端反斜杠 (\)。 預設為 $(OutDir)app.publish\ 資料夾。 |
$(RemoteMachine) |
設定為偵錯屬性頁的 Remote Machine 屬性值。 如需詳細資訊,請參閱 變更 C/C++ 偵錯組態的項目設定。 |
$(RootNameSpace) |
包含應用程式的命名空間 (如果有的話)。 |
$(SolutionDir) |
解決方案的目錄(定義為磁碟驅動器+ 路徑):包含尾端反斜杠 (\)。 只有在 IDE 中建置方案時才會定義。 |
$(SolutionExt) |
解決方案的副檔名。 副檔名前面有 '.'。 只有在 IDE 中建置方案時才會定義。 |
$(SolutionFileName) |
解決方案的檔案名稱 (定義為主檔名 + 副檔名)。 只有在 IDE 中建置方案時才會定義。 |
$(SolutionName) |
解決方案的主檔名。 只有在 IDE 中建置方案時才會定義。 |
$(SolutionPath) |
解決方案的絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 只有在 IDE 中建置方案時才會定義。 |
$(TargetDir) |
組建的主要輸出檔目錄(定義為磁碟驅動器+ 路徑):包含尾端反斜杠 (\)。 |
$(TargetExt) |
建置的主要輸出檔副檔名。 副檔名前面有 '.'。 |
$(TargetFileName) |
建置的主要輸出檔檔案名稱 (定義為主檔名 + 副檔名)。 |
$(TargetName) |
建置的主要輸出檔主檔名。 |
$(TargetPath) |
建置的主要輸出檔絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 |
$(VCInstallDir) |
包含您 Visual Studio 安裝之 C++ 內容的目錄。 此屬性包含目標Microsoft C++ (MSVC) 工具組的版本,這可能與主控 Visual Studio 不同。 例如,使用 $(PlatformToolset) = v140 建置時, $(VCInstallDir) 包含 Visual Studio 2015 安裝的路徑。 |
$(VSInstallDir) |
Visual Studio 安裝所在目錄。 這個屬性包含的目標 Visual Studio 工具集版本,可能和主機 Visual Studio 不一樣。 例如,使用 $(PlatformToolset) = v110 建置時, $(VSInstallDir) 包含 Visual Studio 2012 安裝的路徑。 |
$(WebDeployPath) |
從 Web 部署根目錄到專案輸出所屬根目錄的相對路徑。 |
$(WebDeployRoot) |
位置的 <localhost> 絕對路徑。 例如: c:\inetpub\wwwroot 。 |
已淘汰的巨集
visual Studio 2008 與 Visual Studio 2010 之間的建置系統已大幅變更C++。 先前項目類型中使用的許多巨集已變更為新的巨集。 這些巨集不再使用,或由一或多個對等的屬性或 專案元數據巨集 (%(item-name)
) 值取代。 移轉工具可以更新標示為「已移轉」的巨集。 如果包含巨集的專案從 Visual Studio 2008 或更早版本移轉至 Visual Studio 2010,Visual Studio 會將巨集轉換成對等的目前巨集。 較新版本的 Visual Studio 無法將專案從 Visual Studio 2008 和更早版本轉換為新的專案類型。 您必須用兩個步驟來轉換這些專案;首先,將它們轉換成 Visual Studio 2010,然後將結果轉換成您的 Visual Studio 較新版本。 如需詳細資訊,請參閱潛在升級問題概觀。
Macro | 描述 |
---|---|
$(InputDir) |
(已移轉。)輸入檔目錄(定義為磁碟驅動器+ 路徑):包含尾端反斜杠 (\)。 如果項目是輸入,則此巨集相當於 $(ProjectDir) 。 |
$(InputExt) |
(已移轉。)輸入檔的擴展名。 副檔名前面有 '.'。 如果項目是輸入,則此巨集相當於 $(ProjectExt) 。 對於原始程式檔,它相當於 %(Extension) 。 |
$(InputFileName) |
(已移轉。)輸入檔的檔名(定義為基底名稱 + 擴展名)。 如果項目是輸入,則此巨集相當於 $(ProjectFileName) 。 對於原始程式檔,它相當於 %(Identity) 。 |
$(InputName) |
(已移轉。)輸入檔的基底名稱。 如果項目是輸入,則此巨集相當於 $(ProjectName) 。 對於原始程式檔,它相當於 %(Filename) 。 |
$(InputPath) |
(已移轉。)輸入檔的絕對路徑名稱(定義為磁碟驅動器 + 路徑 + 基底名稱 + 擴展名)。 如果項目是輸入,則此巨集相當於 $(ProjectPath) 。 對於原始程式檔,它相當於 %(FullPath) 。 |
$(ParentName) |
包含這個專案項目的項目名稱。 這個巨集是父資料夾名稱或項目名稱。 |
$(SafeInputName) |
做為有效類別名稱、不包含副檔名的檔案名稱。 這個屬性沒有完全相同的對等專案。 |
$(SafeParentName) |
有效名稱格式的直接父代名稱。 例如,表單是檔案的 .resx 父系。 這個屬性沒有完全相同的對等專案。 |
$(SafeRootNamespace) |
專案精靈應該新增程式代碼的命名空間名稱。 此命名空間名稱只包含有效C++標識碼中允許的字元。 這個屬性沒有完全相同的對等專案。 |
另請參閱
Visual Studio 專案 - C++
Visual C++ 移植和升級指南
潛在升級問題概觀
MSBuild 已知的項目中繼資料