共用方式為


MSBuild 命令和屬性的通用巨集

視您的安裝選項而定,Visual Studio 可以在以 MSBuild 為基礎的 .vcxproj Visual Studio 專案中提供數百個巨集。 巨集會對應至預設設定的 MSBuild 屬性,或是在 或 .targets 檔案中.props,或在項目設定中。 您可以在接受字串的專案 [屬性頁] 對話方塊的任何位置使用這些巨集。 這些巨集不會區分大小寫。

檢視目前的屬性和巨集

若要顯示所有目前可用的巨集,請選取 [項目>屬性],從主功能表開啟專案屬性頁。 在 [ 屬性頁] 對話框中,選擇具有巨集的專案。 您可以透過圍繞其名稱的貨幣符號和括弧來辨識巨集。

例如,在左窗格中,選取 [組態屬性>VC++ 目錄],然後在右窗格中選取 [ 包含目錄]。 Include 目錄的值$(VC_IncludePath);$(WindowsSDK_IncludePath);

圍繞這兩個值的貨幣正負號和括弧表示它們是巨集。 這兩個巨集的展開會將 include 目錄設定為要搜尋。

選取 [包含目錄 ],下拉式清單會出現在數據列結尾。 選取下拉式清單按鈕,然後選取 [ 編輯]。 在出現的 [ 包含目錄 ] 對話框中,選取 [ 巨集]>> 按鈕。

這樣會展開對話框,以顯示 Visual Studio 可見的目前屬性和巨集集,以及每個物件的目前值。 如需詳細資訊,請參閱C++專案屬性頁參考<指定使用者定義值>一節。

選擇 [巨集] 按鈕之後,Visual Studio [包含目錄] 對話框的螢幕快照。

右側是 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 已知的項目中繼資料