共用方式為


MarkupCompilePass1 工作

更新:2007 年 11 月

MarkupCompilePass1 工作會將不可當地語系化的可延伸標記語言 (XAML) 專案檔轉換成編譯的二進位格式。

工作參數

參數

說明

AllGeneratedFiles

選擇性 ITaskItem[] 輸出參數。

包含由 MarkupCompilePass1 工作所產生之檔案的完整清單。

AlwaysCompileMarkupFilesInSeparateDomain

選擇性 Boolean 參數。

指定是否要在獨立的 AppDomain 中執行工作。如果這個參數傳回 false,表示工作會在與 Microsoft Build Engine (MSBuild) 相同的 AppDomain 中執行,執行的速度會較快。如果參數傳回 true,表示會在與 MSBuild 不同的 AppDomain 中執行,執行的速度會較慢。

ApplicationMarkup

選擇性 ITaskItem[] 參數。

指定應用程式定義 XAML 檔案的名稱。

AssembliesGeneratedDuringBuild

選擇性 String[] 參數。

指定在建置程序期間變更的組件參考。例如,Microsoft Visual Studio 2005 方案所包含的專案參考另一個專案的編譯輸出。在這個情況下,第二個專案的編譯輸出可以加入至 AssembliesGeneratedDuringBuild 參數。

注意:AssembliesGeneratedDuringBuild 參數必須包含由建置解決方案產生之完整組件集合的參考。

AssemblyName

必要的 string 參數。

指定針對專案所產生之組件的簡短名稱。例如,如果專案產生名為 WinExeAssembly.exe 的 Windows 可執行檔,AssemblyName 參數的值就是 WinExeAssembly

AssemblyPublicKeyToken

選擇性 String 參數。

指定組件的公開金鑰語彙基元。

AssemblyVersion

選擇性 String 參數。

指定組件的版本號碼

ContentFiles

選擇性 ITaskItem[] 參數。

指定鬆散內容檔案的清單。

DefineConstants

選擇性 String 參數。

指定保留 DefineConstants 的目前值,這會影響目標組件的產生;如果參數變更,目標組件中的公用 API 可能會變更,而參考區域型別之 XAML 檔案的編譯可能會受到影響。

ExtraBuildControlFiles

選擇性 ITaskItem[] 參數。

指定檔案清單,這個清單會控制是否在 MarkupCompilePass1 工作重新執行時觸發重建;重建會在其中一個檔案變更時觸發。

GeneratedBamlFiles

選擇性 ITaskItem[] 輸出參數。

包含產生的 XAML 二進位格式檔案清單。

GeneratedCodeFiles

選擇性 ITaskItem[] 輸出參數。

包含產生的 Managed 程式碼檔案清單。

GeneratedLocalizationFiles

選擇性 ITaskItem[] 輸出參數。

包含為每個可當地語系化的 XAML 檔案產生的當地語系化檔案清單。

HostInBrowser

選擇性 String 參數。

指定產生的組件是否為 XAML 瀏覽器應用程式 (XBAP)。有效選項為 truefalse。如果為 true,則會產生程式碼來支援瀏覽器裝載。

KnownReferencePaths

選擇性 String[] 參數。

指定在建置程序期間不會變更的組件參考。其中包含位於全域組件快取 (GAC)、Microsoft .NET Framework 安裝目錄等的組件。

Language

必要的 String 參數。

指定編譯器支援的 Managed 語言。有效選項為 C#VBJScriptJ#C++

LanguageSourceExtension

選擇性 String 參數。

指定擴充,這個擴充會附加至產生之 Managed 程式碼檔案的擴充:

<Filename>.g<LanguageSourceExtension>

如果 LanguageSourceExtension 參數沒有設定特定值,則會使用語言的預設原始程式檔副檔名:Microsoft Visual Basic 為 .vb,C# 為 .csharp

LocalizationDirectivesToLocFile

選擇性 String 參數。

指定如何產生每個 XAML 原始程式檔的當地語系化資訊。有效選項包括 NoneCommentsOnlyAll

OutputPath

必要的 String 參數。

指定所產生的 Managed 程式碼檔案和 XAML 二進位格式檔案要在哪個目錄中產生。

OutputType

必要的 String 參數。

指定專案所產生組件的類型。有效選項為 winexeexelibrarynetmodule

PageMarkup

選擇性 ITaskItem[] 參數。

指定要處理的 XAML 檔案清單。

References

選擇性 ITaskItem[] 參數。

指定檔案對包含 XAML 檔案所用型別之組件的參考清單。

RequirePass2ForMainAssembly

選擇性 Boolean 輸出參數。

表示專案是否包含不可當地語系化的 XAML 檔案,這些檔案參考內嵌到主要組件的區域型別。

RequirePass2ForSatelliteAssembly

選擇性 Boolean 輸出參數。

表示專案是否包含可當地語系化的 XAML 檔案 (這些檔案參考內嵌到主要組件的區域型別)。

RootNamespace

選擇性 String 參數。

指定專案內部類別的根命名空間。若對應的 XAML 檔案沒有 x:Class 屬性,則產生的 Managed 程式碼檔案也會使用 RootNamespace 做為預設命名空間。

SourceCodeFiles

選擇性 ITaskItem[] 參數。

指定目前專案的程式碼檔案清單。此清單不包含產生的語言特定 Managed 程式碼檔案。

UICulture

選擇性 String 參數。

指定 UI 文化特性 (Culture) 的附屬組件,產生的 XAML 二進位格式檔案會內嵌到該附屬組件。如果沒有設定 UICulture,產生的 XAML 二進位格式檔案會內嵌到主要組件。

XAMLDebuggingInformation

選擇性 Boolean 參數。

若為 true,表示會產生診斷資訊,並包含在編譯的 XAML 中,以協助偵錯。

備註

MarkupCompilePass1 工作通常會將 XAML 編譯成二進位格式並產生程式碼檔案。如果 XAML 檔案參考相同專案中定義的型別,編譯成二進位格式的作業會由 MarkupCompilePass1 延後到第二次標記編譯傳遞 (MarkupCompilePass2)。此類檔案必須延後其編譯,因為必須等候直到參考的本機定義型別完成編譯為止。不過,如果 XAML 檔案有 x:Class 屬性,MarkupCompilePass1 會為它產生語言特定程式碼檔案。

如果 XAML 檔案包含使用 x:Uid 屬性的項目,表示此檔案可當地語系化:

<Page x:Class="WPFMSBuildSample.Page1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    x:Uid="Page1Uid"
    >
  ...
</Page>

當 XAML 檔案宣告 XML 命名空間,而這個命名空間使用 clr-namespace 值參考目前專案中的命名空間時,表示此檔案參考區域定義型別:

<Page x:Class="WPFMSBuildSample.Page1"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:localNamespace="clr-namespace:WPFMSBuildSample"
    >
    <Grid>
      <Grid.Resources>
        <localNameSpace:LocalType x:Key="localType" />
      </Grid.Resources>
      ...
    </Grid>
</Page>

如果任何 XAML 檔案可當地語系化,或參考區域定義型別,就需要第二次標記編譯傳遞,這需要先執行 GenerateTemporaryTargetAssembly 工作,再執行 MarkupCompilePass2 工作

範例

以下範例將說明如何將三個 PageXAML 檔案轉換成二進位格式檔案。Page1 包含型別 Class1 的參考,由於這個型別位於專案的根命名空間,因此在這次標記編譯傳遞不會轉換成二進位格式檔案。相反地,則會執行 GenerateTemporaryTargetAssembly 工作,然後再執行 MarkupCompilePass2 工作

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask 
    TaskName="Microsoft.Build.Tasks.Windows.MarkupCompilePass1" 
    AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
  <Target Name="MarkupCompilePass1Task">
    <MarkupCompilePass1 
      AssemblyName="WPFMSBuildSample"
      Language="C#"
      OutputType="WinExe"
      OutputPath="obj\Debug\"
      ApplicationMarkup="App.xaml"
      PageMarkup="Page1.xaml;Page2.xaml;Page3.xaml"
      SourceCodeFiles="Class1.cs"
      References="c:\windows\Microsoft.net\Framework\v2.0.50727\System.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationCore.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationFramework.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\WindowsBase.dll" />
  </Target>
</Project>

請參閱

概念

建置 WPF 應用程式 (WPF)

Windows Presentation Foundation XAML 瀏覽器應用程式概觀

其他資源

Windows Presentation Foundation MSBuild 參考

Windows Presentation Foundation MSBuild 工作參考

MSBuild 參考

MSBuild 工作參考