一般 MSBuild 專案屬性

更新:2007 年 11 月

所有 Visual Studio 專案 (不論專案類型為何) 都有特定的通用 MSBuild 屬性。此外,還有一些常用的屬性。以下列出通用和常用的屬性。

通用屬性和參數清單

屬性或參數名稱

描述

AdditionalLibPaths

指定其他資料夾,讓編譯器在其中尋找參考組件。

AddModules

讓編譯器允許您正在編譯的專案使用指定檔案中的所有型別資訊。這個屬性相當於 /addModules 編譯器參數。

ALToolPath

可找到 AL.exe 的路徑。這個屬性會覆寫 AL.exe 的目前版本,以使用不同版本。

ApplicationIcon

傳遞到編譯器的 .ico 圖示檔,以內嵌為 Win32 圖示。這個屬性相當於 /win32icon 編譯器參數。

ApplicationManifest

指定檔案的路徑,這個路徑會用來產生外部使用者帳戶控制 (User Account Control,UAC) 資訊清單資訊。僅適用於以 Windows Vista 為目標的 Visual Studio 專案。

資訊清單通常是內嵌的。不過,如果您使用免註冊的 COM 或 ClickOnce 部署,那麼資訊清單可能是與應用程式組件一起安裝的外部檔案。如需詳細資訊,請參閱本主題中的 NoWin32Manifest 屬性。

AssemblySearchPaths

在建置階段參考組件解析期間尋找的位置清單。路徑出現在清單中的順序是有意義的,因為早出現的路徑會優先於晚出現的路徑。

AssemblyName

專案建置後的最後輸出組件名稱。

BaseAddress

指定主要輸出組件的基底位址 (Base Address)。這個屬性相當於 /baseaddress 編譯器參數。

BaseOutputPath

指定輸出檔的基底路徑。如果設定此屬性,MSBuild 會使用 OutputPath = $(BaseOutputPath)\$(Configuration)\。範例語法:<BaseOutputPath>c:\xyz\bin\</BaseOutputPath>

BaseIntermediateOutputPath

指定輸出檔的基底中繼路徑。範例語法:<BaseIntermediateOutputPath>c:\xyz\obj\</BaseIntermediateOutputPath>

BuildInParallel

布林值,指出使用多處理器 MSBuild 時,專案參考是否同時建置或清除。預設值為 true,表示如果系統有多核心或多處理器,專案就會同時建置。

BuildProjectReferences

布林值,指出 MSBuild 是否要建置專案參考。如果您要在 Visual Studio 整合式開發環境 (IDE) 中建置 (Build) 專案,請設定為 false,否則請設為 true。

BaseIntermediateOutputPath

在其中建立所有特定組態中繼輸出資料夾的最上層資料夾。預設值為 obj\。

CleanFile

用來當做「清除快取」的檔案名稱。清除快取是產生的檔案清單,將在清除作業期間刪除。建置處理序會將這個檔案放在中繼輸出路徑。

這個屬性只指定檔案名稱,沒有路徑資訊。

CodePage

指定編譯過程中所有原始程式碼檔案使用的字碼頁。這個屬性相當於 /codepage 編譯器參數。

CompilerResponseFile

可傳遞給編譯器工作的選擇性回應檔。

Configuration

正在建置的組態,可能是「偵錯」或「發行」。

CscToolPath

csc.exe (Visual C# 編譯器) 的路徑。

CustomBeforeMicrosoftCommonTargets

在一般目標匯入之前,要自動匯入的專案檔或目標檔名稱。

DebugSymbols

布林值,指出建置是否要產生符號。

在命令列上設定 /p:DebugSymbols=false 時,會停用產生程式資料庫 (.pdb) 符號檔。

DefineConstants

定義條件式編譯器常數。符號/值配對是由分號來分隔,並使用下列語法指定:

symbol1 = value1 ; symbol2 = value2

這個屬性相當於 /define 編譯器參數。

DefineDebug

布林值,指出您是否要定義 DEBUG 常數。

DefineTrace

布林值,指出您是否要定義 TRACE 常數。

DebugType

定義您要產生的偵測資訊層級。有效值為 "full"、"pdbonly" 和 "none"。

DelaySign

布林值,指出您是否要延遲簽署組件而不要完整簽署它。

DisabledWarnings

隱藏指定的警告。您只需要指定警告識別項的數字部分。分號會分隔多個警告。這個參數對應於 vbc.exe 編譯器的 /nowarn 參數。

DisableFastUpToDateCheck

只適用於 Visual Studio 的布林值。Visual Studio 組建管理員 (Build Manager) 會使用名為 FastUpToDateCheck 的處理序判斷是否必須將專案重建成最新的。此處理序比使用 MSBuild 來判斷快。將 DisableFastUpToDateCheck 屬性設為 true,可讓您略過 Visual Studio 組建管理員 (Build Manager),並強制使用 MSBuild 來判斷專案是否為最新版本。

DocumentationFile

產生為 XML 文件檔的檔案名稱。這個名稱只包含檔案名稱,沒有路徑資訊。

ErrorReport

指定編譯器工作報告編譯器內部錯誤的方式。有效值為 "prompt"、"send" 或 "none"。這個屬性相當於 /errorreport 編譯器參數。

ExcludeDeploymentUrl

如果專案檔包含下列任何項目,則 GenerateDeploymentManifest 工作 會將 deploymentProvider 標記 (Tag) 加入至部署資訊清單:

  • UpdateUrl

  • InstallUrl

  • PublishUrl

不過,如果使用 ExcludeDeploymentUrl,您就可以避免 deploymentProvider 標記加入至部署資訊清單 (即使已指定了上述 URL)。若要這麼做,請將下列屬性加入到您的專案檔:

<ExcludeDeploymentUrl>true</ExcludeDeploymentUrl>

注意事項:

ExcludeDeploymentUrl 並未公開於 Visual Studio IDE 內,因此只能透過手動編輯此專案檔,才能加以設定。設定這個屬性並不會影響 Visual Studio 內的發行,也就是說,deploymentProvider 標記還是會加入至由 PublishUrl 所指定的 URL。

FileAlignment

指定要對齊輸出檔案區段的位置 (以位元組為單位)。有效值為 512、1024、2048、4096、8192。這個屬性相當於 /filealignment 編譯器參數。

FrameworkPathOverride

指定 mscorlib.dll 和 microsoft.visualbasic.dll 的位置。這個參數 (Parameter) 相當於 vbc.exe 編譯器的 /sdkpath 參數 (Switch)。

GenerateDocumentation

布林值參數,指出建置是否要產生文件。如果為 true,建置會產生文件資訊並將之置於 .xml 檔,並以建置工作所建立的可執行檔或程式庫來命名。

IntermediateOutputPath

如果沒有指定路徑,這是從 BaseIntermediateOutputPath 衍生的完整中繼輸出路徑。例如 \obj\debug\。如果這個屬性被覆寫,則 BaseIntermediateOutputPath 設定沒有任何作用。

KeyContainerName

強式名稱 (Strong Name) 金鑰容器的名稱。

KeyOriginatorFile

強式名稱金鑰檔的名稱。

NoWin32Manifest

決定編譯器是否會產生預設 Win32 資訊清單到輸出組件。預設值為 false,表示會為所有應用程式產生預設 Win32 資訊清單。這個屬性相當於 vbc.exe 的 /nowin32manifest 編譯器參數。

ModuleAssemblyName

編譯的模組將合併到其中的組件名稱。這個屬性相當於 /moduleassemblyname 編譯器參數。

NoLogo

布林值,指出您是否要關閉編譯器標誌。這個屬性相當於 /nologo 編譯器參數。

NoStdLib

布林值,指出是否要避免參考標準程式庫 (mscorlib.dll)。預設值是 false。

NoVBRuntimeReference

布林值,指出 Visual Basic 執行階段 (Microsoft.VisualBasic.dll) 是否應當做參考包含在專案中。

NoWin32Manifest

布林值,指出使用者帳戶控制 (UAC) 資訊清單資訊是否將會內嵌在應用程式的可執行檔中。僅適用於以 Windows Vista 為目標的 Visual Studio 專案。在使用 ClickOnce 和免註冊 COM 所部署的專案中,這個項目會被略過。False (預設值) 會指定使用者帳戶控制 (UAC) 資訊清單資訊將會內嵌在應用程式的可執行檔中。True 會指定不內嵌 UAC 資訊清單資訊。

這個屬性僅適用於以 Windows Vista 為目標的 Visual Studio 專案。在使用 ClickOnce 和免註冊 COM 所部署的專案中,這個項目會被略過。

您應該只在不希望 Visual Studio 在應用程式的可執行檔中內嵌任何資訊清單資訊時才加入 NoWin32Manifest,這種過程稱為「虛擬化」(Virtualization)。若要使用虛擬化,請配合 <NoWin32Manifest> 一起設定 <ApplicationManifest>,如下所示:

  • 若是 Visual Basic 專案,請移除 <ApplicationManifest> 節點 (在 Visual Basic 專案中,當 <ApplicationManifest> 節點存在時,便會忽略 <NoWin32Manifest>)。

  • 若是 Visual C# 專案,請將 <ApplicationManifest> 設定為 False,並將 <NoWin32Manifest> 設定為 True (在 Visual C# 專案中,<ApplicationManifest> 會覆寫 <NoWin32Manifest>)。

Optimize

布林值,當設為 true 時,可啟用編譯器最佳化。這個屬性相當於 /optimize 編譯器參數。

OptionCompare

指定如何進行字串比較。有效值為 "binary" 或 "text"。這個屬性相當於 vbc.exe 的 /optioncompare 編譯器參數。

OptionExplicit

布林值,當設為 true 時,需要在原始程式碼中明確宣告變數。這個屬性相當於 /optionexplicit 編譯器參數。

OptionInfer

布林值,當設為 true 時,可啟用變數的型別推斷。這個屬性相當於 /optioninfer 編譯器參數。

OptionStrict

布林值,當設為 true 時,可讓建置工作強制執行嚴格型別語意,以限制隱含型別轉換。這個屬性相當於 vbc.exe 編譯器的 /optionstrict 參數。

OutputPath

這個屬性通常在專案檔中指定,類似於 OutDir。OutputPath 已經被取代,因此應該要盡可能改用 OutDir。

OutputType

指定輸出檔的檔案格式。這個參數的值可以是下列其中一個:

  • Library。建立程式碼程式庫。(預設值)。

  • Exe。建立主控台應用程式 (Console Application)。

  • 模組。建立模組。

  • Winexe。建立 Windows 架構程式。

這個屬性相當於 vbc.exe 編譯器的 /target 參數。

OverwriteReadOnlyFiles

布林值,指出您要讓建置覆寫唯讀檔案還是觸發錯誤。

PdbFile

您正在發出的 .pdb 檔的檔案名稱。這個屬性相當於 csc.exe 編譯器的 /pdb 參數。

Platform

您建置所設定的目標作業系統。有效值為 "AnyCPU"、"x86"、"x64" 或 "Itanium"。

RemoveIntegerChecks

布林值,指出是否要停用整數溢位錯誤檢查。預設值是 false。這個屬性相當於 vbc.exe 編譯器的 /removeintchecks 參數。

SGenUseProxyTypes

布林值,指出 SGen.exe 是否應產生 Proxy 型別。

SGenToolPath

選擇性工具路徑,指出覆寫目前版本的 SGen.exe 時,要到何處取得 SGen.exe。

StartupObject

指定包含 Main 方法或 Sub Main 程序的類別或模組。這個屬性相當於 /main 編譯器參數。

ProcessorArchitecture

解析組件參考時使用的處理器架構。有效值為 "msil"、"x86"、"amd64" 或 "ia64"。

RootNamespace

命名內嵌資源時使用的根命名空間。這個命名空間是內嵌資源資訊清單名稱的一部分。

Satellite_AlgorithmId

建立附屬組件時要使用之 AL.exe 雜湊演算法的 ID。

Satellite_BaseAddress

使用 CreateSatelliteAssemblies 目標建置特定文化特性的附屬組件時,要使用的基底位址。

Satellite_CompanyName

產生附屬組件期間要傳入 AL.exe 的公司名稱。

Satellite_Configuration

產生附屬組件期間要傳入 AL.exe 的組態名稱。

Satellite_Description

產生附屬組件期間要傳入 AL.exe 的描述文字。

Satellite_EvidenceFile

將指定的檔案嵌入到具有資源名稱 "Security.Evidence" 的附屬組件。

Satellite_FileVersion

在附屬組件中的 [檔案版本] 欄位指定字串。

Satellite_Flags

在附屬組件中的 [旗標] 欄位指定值。

Satellite_GenerateFullPaths

設定建置工作針對錯誤訊息中報告的任何檔案使用絕對路徑。

Satellite_LinkResource

將指定的資源檔連結至附屬組件。

Satellite_MainEntryPoint

指定產生附屬組件期間將模組轉換成可執行檔時,用來做為進入點 (Entry Point) 之方法的完整名稱 (即 class.method)。

Satellite_ProductName

在附屬組件中的 [產品] 欄位指定字串。

Satellite_ProductVersion

在附屬組件中的 [ProductVersion] 欄位指定字串。

Satellite_TargetType

將附屬組件輸出檔的檔案格式指定為 "library"、"exe" 或 "win"。預設值為 "library"。

Satellite_Title

在附屬組件中的 [標題] 欄位指定字串。

Satellite_Trademark

在附屬組件中的 [商標] 欄位指定字串。

Satellite_Version

指定附屬組件的版本資訊。

Satellite_Win32Icon

將 .ico 圖示檔插入附屬組件。

Satellite_Win32Resource

將 Win32 資源 (.res 檔) 插入附屬組件。

TargetCompactFramework

執行您建置的應用程式所需的 .NET Compact Framework 版本。指定此屬性可讓您參考無法以其他方式參考的某些架構組件。

TargetFrameworkVersion

執行將建置之應用程式所需的 .NET Framework 版本。指定此屬性可讓您參考無法以其他方式參考的某些架構組件。

TreatWarningsAsErrors

布林值參數,如果為 true,表示會將所有警告視為錯誤。這個參數 (Parameter) 相當於 /nowarn 編譯器參數 (Switch)。

UseHostCompilerIfAvailable

布林值參數,如果為 true,表示建置工作會使用同處理序 (In-Process) 物件 (如果有的話)。這個參數僅供 Visual Studio 使用。

Utf8Output

布林值參數,如果為 true,會使用 UTF-8 編碼記錄編譯器輸出。這個參數 (Parameter) 相當於 /utf8Output 編譯器參數 (Switch)。

VbcToolPath

選擇性路徑,指出覆寫目前版本的 vbc.exe 時,vbc.exe 的其他位置。

VbcVerbosity

指定 Visual Basic 編譯器輸出的詳細等級。有效值為 "Quiet"、"Normal" (預設值) 或 "Verbose"。

WarningsAsErrors

指定要視為錯誤的警告清單。這個參數 (Parameter) 相當於 /warnaserror 編譯器參數 (Switch)。

WarningsNotAsErrors

指定不要視為錯誤的警告清單。這個參數 (Parameter) 相當於 /warnaserror 編譯器參數 (Switch)。

Win32Manifest

應嵌入在最終版本組件中的資訊清單檔案的名稱。這個參數 (Parameter) 相當於 /win32Manifest 編譯器參數 (Switch)。

Wint32Resource

要嵌入在最終版本組件的 Win32 資源的檔案名稱。這個參數 (Parameter) 相當於 /win32resource 編譯器參數 (Switch)。

請參閱

參考

一般 MSBuild 專案項目