MSBuild 保留和已知屬性

MSBuild 會提供一組預先定義的屬性,用來儲存專案檔和 MSBuild 二進位檔的相關資訊。 這些屬性的評估方式與其他 MSBuild 屬性相同。 例如,若要使用 MSBuildProjectFile 屬性,請輸入 $(MSBuildProjectFile)

MSBuild 會使用下表中的值預先定義保留和已知的屬性。 保留的屬性無法覆寫,且大部分已知屬性都不應該被覆寫,但進階案例除外。

保留和已知屬性

本節中的資料表會顯示 MSBuild 預先定義的屬性。 資料表中的範例資料行與下列範例專案檔相關 (假設位於 C:\Source\Repos\ConsoleApp1\ConsoleApp1),並顯示未使用特殊命令列選項叫用 MSBuild 時,這些屬性在專案檔中存取時的值範例。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
</Project>
屬性 保留或已知 描述 範例
FrameworkSDKRoot 已知 .NET Framework 工具的根資料夾路徑。 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\
InnerBuildProperty 已知 指定用於定義多目標建置維度的屬性名稱 (只有當目前的建置是圖形建置時才適用)。 TargetFramework
InnerBuildPropertyValues 已知 指定用來保留 InnerBuildProperty 可能值的屬性名稱 (只有當目前的建置是圖形建置時才適用)。 TargetFrameworks
IsGraphBuild 已知 如果這是圖形建置,則為 True,也就是說,-graphBuild 選項會生效。 此選項表示 MSBuild 會建構及建置專案圖形。 建構圖表需要識別專案參考以形成相依性。 建置該圖表需要嘗試建置專案參考 (在可參考它們的專案之前),這與傳統 MSBuild 排程不同。
MSBuildAssemblyVersion 已保留 用來建置專案的 MSBuild 組件版本。 16.0
MSBuildBinPath 已保留 目前使用的 MSBuild 二進位檔所在資料夾的絕對路徑 (例如 C:\Windows\Microsoft.Net\Framework\<versionNumber>)。 如果您必須參考 MSBuild 目錄中的檔案,此屬性會相當實用。

不要在這個屬性中包含結尾的反斜線。
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\Current\Bin
MSBuildDisableFeaturesFromVersion 已保留 由 MSBuild 和 Microsoft SDK 用來管理變更波動。
MSBuildExtensionsPath 已知 於 .NET Framework 4 中引入:MSBuildExtensionsPathMSBuildExtensionsPath32 兩者的預設值並無差異。 您可以將環境變數 MSBUILDLEGACYEXTENSIONSPATH 設定為非 null 值,藉此啟用舊版中 MSBuildExtensionsPath 之預設值的行為。

在 .NET Framework 3.5 (含) 以前版本中,MSBuildExtensionsPath 的預設值會指向 \Program Files\\Program Files (x86) 資料夾下 MSBuild 子資料夾的路徑 (根據目前處理序的位元而定)。 例如,若是 64 位元電腦上的 32 位元處理序,這個屬性會指向 \Program Files (x86) 資料夾。 若是 64 位元電腦上的 64 位元處理序,這個屬性會指向 \Program Files 資料夾。

不要在這個屬性中包含結尾的反斜線。

這個位置是放置目標檔案的理想位置。 例如,您的目標檔案可以安裝於 \Program Files\MSBuild\MyFiles\Northwind.targets,然後使用下面這個 XML 程式碼匯入專案檔中:

<Import Project="$(MSBuildExtensionsPath)\MyFiles\Northwind.targets"/>
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild
MSBuildExtensionsPath32 已知 \Program Files\Program Files (x86) 資料夾下 MSBuild 子資料夾的路徑。 路徑一律指向 32 位元電腦上的 32 位元 \Program Files (x86) 資料夾,以及 64 位元電腦上的 \Program Files。 請參閱 MSBuildExtensionsPathMSBuildExtensionsPath64

不要在這個屬性中包含結尾的反斜線。
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild
MSBuildExtensionsPath64 已知 \Program Files 資料夾下 MSBuild 子資料夾的路徑。 若是 64 位元電腦,這個路徑永遠指向 \Program Files 資料夾。 若是 32 位元電腦,這個路徑是空白的。 請參閱 MSBuildExtensionsPathMSBuildExtensionsPath32

不要在這個屬性中包含結尾的反斜線。
C:\Program Files\MSBuild
MSBuildFileVersion 已保留 用來建置專案的 MSBuild 組件 4 部版本。 16.11.0.30701
MSBuildFrameworkToolsPath 已知 建置目前所執行 MSBuild 時所用的 .NET Framework 工具的路徑 (以斜線結尾)。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath32 已知 .NET Framework 工具 32 位元版的路徑 (以斜線結尾),適用於建置目前執行中 MSBuild 時所用的相同架構版本。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath64 已知 .NET Framework 工具 64 位元版的路徑 (以斜線結尾),適用於建置目前執行中 MSBuild 時所用的相同架構版本。 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\
MSBuildInteractive 已保留 如果 MSBuild 以互動方式執行,則為 true,允許使用者輸入。 此設定是由 -interactive 命令列選項所控制。 false
MSBuildLastTaskResult 已保留 如果前述工作順利完成且沒有任何錯誤 (即使有警告),則為 true,如果前述工作發生錯誤,則為 false。 通常在工作中發生錯誤時,錯誤會在該專案中最後發生。 因此,這個屬性的值絕不會是 false,但下列情節除外:

- 將 Task 項目 (MSBuild)ContinueOnError 屬性設為 WarnAndContinue (或 true) 或 ErrorAndContinue 時。

- 當 Target 具有 OnError 項目 (MSBuild) 作為子項目時。
true
MSBuildNodeCount 已保留 建置時使用的並行處理序數目上限。 這是您在命令列中為 -maxcpucount 指定的值。 如果您已指定 -maxcpucount,但未指定值,則 MSBuildNodeCount 會指定電腦中的處理器數目。 如需詳細資訊,請參閱命令列參考平行建置多個專案 1
MSBuildOverrideTasksPath 已知 搜尋 .overridetasks 檔案的位置,可用來提供標準工作的自訂版本。 請參閱 MSBuild 工作

不要在路徑中包含結尾的反斜線。
MSBuildProgramFiles32 已保留 32 位元程式資料夾的位置,例如 C:\Program Files (x86)

不要在這個屬性中包含結尾的反斜線。
C:\Program Files (x86)
MSBuildProjectDefaultTargets 已保留 DefaultTargets 項目的 Project 屬性中所指定目標的完整清單。 例如,下列 Project 項目的 MSBuildDefaultTargets 屬性值為 A;B;C

<Project DefaultTargets="A;B;C" >
Build
MSBuildProjectDirectory 已保留 專案檔所在目錄的絕對路徑,例如 C:\MyCompany\MyProduct

不要在這個屬性中包含結尾的反斜線。
C:\Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectDirectoryNoRoot 已保留 MSBuildProjectDirectory 屬性的值,不包含根磁碟機。

不要在這個屬性中包含結尾的反斜線。
Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectExtension 已保留 專案檔的副檔名,包括英文句號,例如 .proj .csproj
MSBuildProjectFile 已保留 專案檔的完整檔名,包括副檔名,例如 MyApp.proj ConsoleApp1.csproj
MSBuildProjectFullPath 已保留 專案檔的絕對路徑和完整檔名,包括副檔名,例如 C:\MyCompany\MyProduct\MyApp.proj c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildProjectName 已保留 專案檔的檔案名稱,不包括副檔名,例如 MyApp ConsoleApp1
MSBuildRuntimeType 已保留 目前執行的執行階段類型。 已在 MSBuild 15 中引入。 在 MSBuild 15 之前可能未定義值,而 Full 指出 MSBuild 是在傳統型 .NET Framework 上執行、Core 指出 MSBuild 是在 .NET Core 上執行 (例如在 dotnet build 中),或 Mono 指出 MSBuild 是在 Mono 上執行。 Full
MSBuildSDKsPath 已知 MSBuild 用來尋找 SDK 的路徑。 C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\Sdks
MSBuildSemanticVersion 已保留 用來建置專案的 MSBuild 組件完整 SemVer 2.0 版本。 16.11.0-preview-21302-05+5e37cc992
MSBuildStartupDirectory 已保留 呼叫 MSBuild 所在資料夾的絕對路徑。 使用這個屬性就可以在專案樹狀結構中建置特定點之下的所有項目,而不需要在每個目錄中建立 <dirs>.proj 檔案。 而您只會有一個專案,例如 c:\traversal.proj,如下所示:

<Project ...> <ItemGroup> <ProjectFiles Include="$ (MSBuildStartupDirectory) **\*.csproj"/> </ItemGroup> <Target Name="build"> <MSBuild Projects="@(ProjectFiles)"/> </Target> </Project>

若要在樹狀結構中的任何點進行建置,請輸入:

msbuild c:\traversal.proj

不要在這個屬性中包含結尾的反斜線。
c:\Source\Repos\ConsoleApp1
MSBuildThisFile 已保留 MSBuildThisFileFullPath 的檔案名稱和副檔名部分。 ConsoleApp1.csproj
MSBuildThisFileDirectory 已保留 MSBuildThisFileFullPath 的目錄部分。

在路徑中包含結尾的反斜線。
c:\Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileDirectoryNoRoot 已保留 MSBuildThisFileFullPath 的目錄部分,不包括根磁碟機。

在路徑中包含結尾的反斜線。
Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileExtension 已保留 MSBuildThisFileFullPath 的副檔名部分。 .csproj
MSBuildThisFileFullPath 已保留 包含執行中目標之專案檔或 targets 檔的絕對路徑。

提示:您可以在目標檔案中指定相對於目標檔 (而不是相對於原始專案檔) 的相對路徑。
c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildThisFileName 已保留 MSBuildThisFileFullPath 的檔案名稱部分,不包含副檔名。 ConsoleApp1
MSBuildToolsPath 已保留 MSBuildToolsVersion 值相關聯的 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\Current\Bin\
MSBuildToolsPath32 已知 MSBuildToolsVersion 值相關聯的 32 位元 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\Current\Bin
MSBuildToolsPath64 已知 MSBuildToolsVersion 值相關聯的 64 位元 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files (x86)\Microsoft Visual Studio\2019\MSBuild\Current\Bin\amd64
MSBuildToolsVersion 已保留 用來建置專案的 MSBuild 工具組版本。

注意:MSBuild 工具組包含用於建置應用程式的工作、目標和工具。 工具包括編譯器,例如 csc.exe 和 vbc.exe。 如需詳細資訊,請參閱工具組 (ToolsVersion)標準和自訂工具組的組態
Current
MSBuildUserExtensionsPath 已知 此路徑提供 MSBuild 安裝資料夾的位置。 您可以重設以提供每個使用者適用的本機自訂內容。 請參閱自訂本機建置

不要在路徑中包含結尾的反斜線。
MSBuildVersion 已保留 用來建置專案的 MSBuild 版本。

這個屬性無法覆寫,否則就會傳回錯誤訊息 MSB4004 - The 'MSBuildVersion' property is reserved, and can not be modified.
16.11.0
MSBuildWarningsAsErrors 已知 要視為錯誤的警告代碼清單。 MSB1234;MSB5678
MSBuildWarningsAsMessages 已知 要視為訊息的警告代碼清單。 MSB1234;MSB5678
MSBuildWarningsNotAsErrors 已知 即使 -warnAsError 參數設定為將所有其他警告升階為錯誤,也不應升階為錯誤的警告代碼清單。 請注意,如果不是 true,則不會有任何作用。 MSB1234;MSB5678
OS 已知 在 Windows 上,這會繼承自主機作業系統。 可能的值包括 "Windows_NT" 和 "Unix";可以在 Windows 以外的作業系統上設定為不同的值。
RoslynTargetsPath 已知 Roslyn 編譯器的路徑。 C:\Program Files\Microsoft Visual Studio\2019\MSBuild\Current\Bin\Roslyn
SDK35ToolsPath 已知 .NET Framework 3.5 工具的路徑。
SDK40ToolsPath 已知 .NET Framework 4.0 工具的路徑。 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
VsInstallRoot 已知 Visual Studio 安裝資料夾。 C:\Program Files (x86)\Microsoft Visual Studio\2019
WindowsSDK80Path 已知
屬性 保留或已知 描述 範例
FrameworkSDKRoot 已知 .NET Framework 工具的根資料夾路徑。 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\
InnerBuildProperty 已知 指定用於定義多目標建置維度的屬性名稱 (只有當目前的建置是圖形建置時才適用)。 TargetFramework
InnerBuildPropertyValues 已知 指定用來保留 InnerBuildProperty 可能值的屬性名稱 (只有當目前的建置是圖形建置時才適用)。 TargetFrameworks
IsGraphBuild 已知 如果這是圖形建置,則為 True,也就是說,-graphBuild 選項會生效。 此選項表示 MSBuild 會建構及建置專案圖形。 建構圖表需要識別專案參考以形成相依性。 建置該圖表需要嘗試建置專案參考 (在可參考它們的專案之前),這與傳統 MSBuild 排程不同。
MSBuildAssemblyVersion 已保留 用來建置專案的 MSBuild 組件版本。 17.0
MSBuildBinPath 已保留 目前使用的 MSBuild 二進位檔所在資料夾的絕對路徑 (例如 C:\Windows\Microsoft.Net\Framework\<versionNumber>)。 如果您必須參考 MSBuild 目錄中的檔案,此屬性會相當實用。

不要在這個屬性中包含結尾的反斜線。
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildDisableFeaturesFromVersion 已保留 由 MSBuild 和 Microsoft SDK 用來管理變更波動。
MSBuildExtensionsPath 已知 於 .NET Framework 4 中引入:MSBuildExtensionsPathMSBuildExtensionsPath32 兩者的預設值並無差異。 您可以將環境變數 MSBUILDLEGACYEXTENSIONSPATH 設定為非 null 值,藉此啟用舊版中 MSBuildExtensionsPath 之預設值的行為。

在 .NET Framework 3.5 (含) 以前版本中,MSBuildExtensionsPath 的預設值會指向 \Program Files\\Program Files (x86) 資料夾下 MSBuild 子資料夾的路徑 (根據目前處理序的位元而定)。 例如,若是 64 位元電腦上的 32 位元處理序,這個屬性會指向 \Program Files (x86) 資料夾。 若是 64 位元電腦上的 64 位元處理序,這個屬性會指向 \Program Files 資料夾。

不要在這個屬性中包含結尾的反斜線。

這個位置是放置目標檔案的理想位置。 例如,您的目標檔案可以安裝於 \Program Files\MSBuild\MyFiles\Northwind.targets,然後使用下面這個 XML 程式碼匯入專案檔中:

<Import Project="$(MSBuildExtensionsPath)\MyFiles\Northwind.targets"/>
C:\Program Files\Microsoft Visual Studio\2022\MSBuild
MSBuildExtensionsPath32 已知 \Program Files\Program Files (x86) 資料夾下 MSBuild 子資料夾的路徑。 路徑一律指向 32 位元電腦上的 32 位元 \Program Files (x86) 資料夾,以及 64 位元電腦上的 \Program Files。 請參閱 MSBuildExtensionsPathMSBuildExtensionsPath64

不要在這個屬性中包含結尾的反斜線。
C:\Program Files\Microsoft Visual Studio\2022\MSBuild
MSBuildExtensionsPath64 已知 \Program Files 資料夾下 MSBuild 子資料夾的路徑。 若是 64 位元電腦,這個路徑永遠指向 \Program Files 資料夾。 若是 32 位元電腦,這個路徑是空白的。 請參閱 MSBuildExtensionsPathMSBuildExtensionsPath32

不要在這個屬性中包含結尾的反斜線。
C:\Program Files\MSBuild
MSBuildFileVersion 已保留 用來建置專案的 MSBuild 組件 4 部版本。 17.4.0.46505
MSBuildFrameworkToolsPath 已知 建置目前所執行 MSBuild 時所用的 .NET Framework 工具的路徑 (以斜線結尾)。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath32 已知 .NET Framework 工具 32 位元版的路徑 (以斜線結尾),適用於建置目前執行中 MSBuild 時所用的相同架構版本。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\
MSBuildFrameworkToolsPath64 已知 .NET Framework 工具 64 位元版的路徑 (以斜線結尾),適用於建置目前執行中 MSBuild 時所用的相同架構版本。 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\
MSBuildInteractive 已保留 如果 MSBuild 以互動方式執行,則為 true,允許使用者輸入。 此設定是由 -interactive 命令列選項所控制。 false
MSBuildLastTaskResult 已保留 如果前述工作順利完成且沒有任何錯誤 (即使有警告),則為 true,如果前述工作發生錯誤,則為 false。 通常在工作中發生錯誤時,錯誤會在該專案中最後發生。 因此,這個屬性的值絕不會是 false,但下列情節除外:

- 將 Task 項目 (MSBuild)ContinueOnError 屬性設為 WarnAndContinue (或 true) 或 ErrorAndContinue 時。

- 當 Target 具有 OnError 項目 (MSBuild) 作為子項目時。
true
MSBuildNodeCount 已保留 建置時使用的並行處理序數目上限。 這是您在命令列中為 -maxcpucount 指定的值。 如果您已指定 -maxcpucount,但未指定值,則 MSBuildNodeCount 會指定電腦中的處理器數目。 如需詳細資訊,請參閱命令列參考平行建置多個專案 1
MSBuildOverrideTasksPath 已知 搜尋 .overridetasks 檔案的位置,可用來提供標準工作的自訂版本。 請參閱 MSBuild 工作

不要在路徑中包含結尾的反斜線。
MSBuildProgramFiles32 已保留 32 位元程式資料夾的位置,例如 C:\Program Files (x86)

不要在這個屬性中包含結尾的反斜線。
C:\Program Files (x86)
MSBuildProjectDefaultTargets 已保留 DefaultTargets 項目的 Project 屬性中所指定目標的完整清單。 例如,下列 Project 項目的 MSBuildDefaultTargets 屬性值為 A;B;C

<Project DefaultTargets="A;B;C" >
Build
MSBuildProjectDirectory 已保留 專案檔所在目錄的絕對路徑,例如 C:\MyCompany\MyProduct

不要在這個屬性中包含結尾的反斜線。
C:\Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectDirectoryNoRoot 已保留 MSBuildProjectDirectory 屬性的值,不包含根磁碟機。

不要在這個屬性中包含結尾的反斜線。
Source\Repos\ConsoleApp1\ConsoleApp1
MSBuildProjectExtension 已保留 專案檔的副檔名,包括英文句號,例如 .proj .csproj
MSBuildProjectFile 已保留 專案檔的完整檔名,包括副檔名,例如 MyApp.proj ConsoleApp1.csproj
MSBuildProjectFullPath 已保留 專案檔的絕對路徑和完整檔名,包括副檔名,例如 C:\MyCompany\MyProduct\MyApp.proj c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildProjectName 已保留 專案檔的檔案名稱,不包括副檔名,例如 MyApp ConsoleApp1
MSBuildRuntimeType 已保留 目前執行的執行階段類型。 已在 MSBuild 15 中引入。 在 MSBuild 15 之前可能未定義值,而 Full 指出 MSBuild 是在傳統型 .NET Framework 上執行、Core 指出 MSBuild 是在 .NET Core 上執行 (例如在 dotnet build 中),或 Mono 指出 MSBuild 是在 Mono 上執行。 Full
MSBuildStartupDirectory 已保留 呼叫 MSBuild 所在資料夾的絕對路徑。 使用這個屬性就可以在專案樹狀結構中建置特定點之下的所有項目,而不需要在每個目錄中建立 <dirs>.proj 檔案。 而您只會有一個專案,例如 c:\traversal.proj,如下所示:

<Project ...> <ItemGroup> <ProjectFiles Include="$ (MSBuildStartupDirectory) **\*.csproj"/> </ItemGroup> <Target Name="build"> <MSBuild Projects="@(ProjectFiles)"/> </Target> </Project>

若要在樹狀結構中的任何點進行建置,請輸入:

msbuild c:\traversal.proj

不要在這個屬性中包含結尾的反斜線。
c:\Source\Repos\ConsoleApp1
MSBuildThisFile 已保留 MSBuildThisFileFullPath 的檔案名稱和副檔名部分。 ConsoleApp1.csproj
MSBuildThisFileDirectory 已保留 MSBuildThisFileFullPath 的目錄部分。

在路徑中包含結尾的反斜線。
c:\Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileDirectoryNoRoot 已保留 MSBuildThisFileFullPath 的目錄部分,不包括根磁碟機。

在路徑中包含結尾的反斜線。
Source\Repos\ConsoleApp1\ConsoleApp1\
MSBuildThisFileExtension 已保留 MSBuildThisFileFullPath 的副檔名部分。 .csproj
MSBuildThisFileFullPath 已保留 包含執行中目標之專案檔或 targets 檔的絕對路徑。

提示:您可以在目標檔案中指定相對於目標檔 (而不是相對於原始專案檔) 的相對路徑。
c:\Source\Repos\ConsoleApp1\ConsoleApp1\ConsoleApp1.csproj
MSBuildThisFileName 已保留 MSBuildThisFileFullPath 的檔案名稱部分,不包含副檔名。 ConsoleApp1
MSBuildToolsPath 已保留 MSBuildToolsVersion 值相關聯的 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildToolsPath32 已知 MSBuildToolsVersion 值相關聯的 32 位元 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin
MSBuildToolsPath64 已知 MSBuildToolsVersion 值相關聯的 64 位元 MSBuild 版本安裝路徑。

不要在路徑中包含結尾的反斜線。

這個屬性無法覆寫。
C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\amd64
MSBuildToolsVersion 已保留 用來建置專案的 MSBuild 工具組版本。

注意:MSBuild 工具組包含用於建置應用程式的工作、目標和工具。 工具包括編譯器,例如 csc.exe 和 vbc.exe。 如需詳細資訊,請參閱工具組 (ToolsVersion)標準和自訂工具組的組態
Current
MSBuildSDKsPath 已知 MSBuild 用來尋找 SDK 的路徑。 C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Sdks
MSBuildSemanticVersion 已保留 用來建置專案的 MSBuild 組件完整 SemVer 2.0 版本。 17.4.0-preview-22465-05+6033e4c95
MSBuildUserExtensionsPath 已知 此路徑提供 MSBuild 安裝資料夾的位置。 您可以重設以提供每個使用者適用的本機自訂內容。 請參閱自訂本機建置

不要在路徑中包含結尾的反斜線。
MSBuildVersion 已保留 用來建置專案的 MSBuild 版本。

這個屬性無法覆寫,否則就會傳回錯誤訊息 MSB4004 - The 'MSBuildVersion' property is reserved, and can not be modified.
17.4.0
MSBuildWarningsAsErrors 已知 要視為錯誤的警告代碼清單。 MSB1234;MSB5678
MSBuildWarningsAsMessages 已知 要視為訊息的警告代碼清單。 MSB1234;MSB5678
MSBuildWarningsNotAsErrors 已知 即使 -warnAsError 參數設定為將所有其他警告升階為錯誤,也不應升階為錯誤的警告代碼清單。 請注意,如果不是 true,則不會有任何作用。 MSB1234;MSB5678
OS 已知 在 Windows 上,這會繼承自主機作業系統。 可能的值包括 "Windows_NT" 和 "Unix";可以在 Windows 以外的作業系統上設定為不同的值。
RoslynTargetsPath 已知 Roslyn 編譯器的目標路徑。 C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Current\Bin\Roslyn
SDK35ToolsPath 已知 .NET Framework 3.5 工具的路徑。
SDK40ToolsPath 已知 .NET Framework 4.0 工具的路徑。 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
VsInstallRoot 已知 Visual Studio 安裝資料夾。 C:\Program Files\Microsoft Visual Studio\2022
WindowsSDK80Path 已知 Windows 8 SDK 的路徑。

C++ 專案特有的屬性

下列屬性代表各種 C++ 工具組版本和目標作業系統的 C++ MSBuild 匯入檔案路徑,例如 .props.targets 檔案。 這些資料夾中的檔案代表 C++ 建置基礎結構,而且對於使用 MSBuild 建置任何 C++ 專案而言非常重要。

屬性 保留或已知 描述 範例
AndroidTargetsPath 已知 適用於 Android 建置作業的 C++ MSBuild 匯入檔案路徑。 C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Microsoft\MDD\Android\V150\
iOSTargetsPath 已知 適用於 iOS 建置作業的 C++ MSBuild 匯入檔案路徑。 C:\Program Files\Microsoft Visual Studio\2022\Preview\MSBuild\Microsoft\MDD\iOS\V150\
VCTargetsPath 已知 支援 C++ 建置系統的 C++ MSBuild 檔案路徑。 C:\Program Files\Microsoft Visual Studio\2022\MSBuild\Microsoft\VC\v170\
VCTargetsPath10 已知 支援 Visual Studio 2010 工具組的 C++ MSBuild 檔案路徑。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\
VCTargetsPath11 已知 適用於 Visual Studio 2012 (V110) 工具組的 MSBuild 匯入檔案路徑。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\
VCTargetsPath12 已知 適用於 Visual Studio 2013 (V120) 工具組的 MSBuild 匯入檔案路徑。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\
VCTargetsPath14 已知 適用於 Visual Studio 2015 (V140) 工具組的 MSBuild 匯入檔案路徑。 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\

與 MSBuild 項目發生衝突的名稱

除了上述項目,對應至 MSBuild 語言項目的名稱也無法用於使用者定義的屬性、項目或項目中繼資料:

  • VisualStudioProject
  • 目標
  • PropertyGroup
  • 輸出
  • ItemGroup
  • UsingTask
  • ProjectExtensions
  • OnError
  • ImportGroup
  • 選擇
  • Otherwise

另請參閱