Tugas MarkupCompilePass1
Tugas MarkupCompilePass1 mengonversi file proyek XAML yang tidak dapat dilokalkan ke format biner yang dikompilasi.
Parameter tugas
Parameter | Deskripsi |
---|---|
AllGeneratedFiles |
Parameter output ITaskItem[] opsional. Berisi daftar lengkap file yang dibuat oleh tugas MarkupCompilePass1. |
AlwaysCompileMarkupFilesInSeparateDomain |
Parameter Boolean opsional. Menentukan apakah akan menjalankan tugas dalam AppDomain terpisah. Jika parameter ini menampilkan false, tugas berjalan di AppDomain yang sama dengan MSBuild dan berjalan lebih cepat. Jika parameter menampilkan true, tugas berjalan dalam AppDomain kedua yang diisolasi dari MSBuild dan berjalan lebih lambat. |
ApplicationMarkup |
Parameter ITaskItem[] opsional. Menentukan nama file XAML definisi aplikasi. |
AssembliesGeneratedDuringBuild |
Parameter String[] opsional. Menentukan referensi ke rakitan yang berubah selama proses build. Misalnya, solusi Visual Studio mungkin berisi satu proyek yang mereferensikan output yang dikompilasi dari proyek lain. Dalam hal ini, output yang dikompilasi dari proyek kedua dapat ditambahkan ke parameter AssembliesGeneratedDuringBuild. Catatan: Parameter AssembliesGeneratedDuringBuild harus berisi referensi ke kumpulan rakitan lengkap yang dihasilkan oleh solusi build. |
AssemblyName |
Parameter string yang diperlukan. Menentukan nama pendek rakitan yang dibuat untuk proyek. Misalnya, jika proyek menghasilkan Windows yang dapat dieksekusi yang namanya WinExeAssembly.exe, parameter AssemblyName memiliki nilai WinExeAssembly. |
AssemblyPublicKeyToken |
Parameter String opsional. Menentukan token kunci publik untuk rakitan. |
AssemblyVersion |
Parameter String opsional. Menentukan nomor versi rakitan yang akan diproduksi. |
ContentFiles |
Parameter ITaskItem[] opsional. Menentukan daftar file konten longgar. |
DefineConstants |
Parameter String opsional. Menentukan bahwa nilai DefineConstants saat ini disimpan. yang mempengaruhi pembuatan rakitan target; jika parameter ini diubah, API publik dalam rakitan target dapat diubah dan kompilasi file XAML yang mereferensikan jenis lokal dapat terpengaruh. |
ExtraBuildControlFiles |
Parameter ITaskItem[] opsional. Menentukan daftar file yang mengontrol apakah pembuatan ulang dipicu saat tugas MarkupCompilePass1 dijalankan ulang; pembuatan ulang dipicu jika salah satu file ini berubah. |
GeneratedBamlFiles |
Parameter output ITaskItem[] opsional. Berisi daftar file yang dibuat dalam format biner XAML. |
GeneratedCodeFiles |
Parameter output ITaskItem[] opsional. Berisi daftar file kode terkelola yang dibuat. |
GeneratedLocalizationFiles |
Parameter output ITaskItem[] opsional. Berisi daftar file pelokalan yang dibuat untuk setiap file XAML yang dapat dilokalkan. |
HostInBrowser |
Parameter String opsional. Menentukan apakah rakitan yang dibuat adalah Aplikasi Browser XAML (XBAP). Opsi yang valid adalah true dan false. Jika true, kode dibuat untuk mendukung hosting browser. |
KnownReferencePaths |
Parameter String[] opsional. Menentukan referensi ke rakitan yang tidak berubah selama proses build. Termasuk rakitan yang terletak di cache rakitan global (GAC), dalam direktori penginstalan .NET, dan sebagainya. |
Language |
Parameter String yang diperlukan. Menentukan bahasa terkelola yang didukung pengompilasi. Opsi yang valid adalah C#, VB, Jscript, dan C++. |
LanguageSourceExtension |
Parameter String opsional. Menentukan ekstensi yang ditambahkan ke ekstensi file kode terkelola yang dibuat: <Filename>.g<LanguageSourceExtension> Jika parameter LanguageSourceExtension tidak diatur dengan nilai tertentu, ekstensi nama file sumber default untuk bahasa digunakan: .vb untuk Visual Basic, .csharp untuk C#. |
LocalizationDirectivesToLocFile |
Parameter String opsional. Menentukan cara membuat informasi pelokalan untuk setiap file XAML sumber. Opsi yang valid adalah None, CommentsOnly, dan All. |
OutputPath |
Parameter String yang diperlukan. Menentukan direktori tempat file kode terkelola yang dibuat dan file format biner XAML dibuat. |
OutputType |
Parameter String yang diperlukan. Menentukan jenis rakitan yang dibuat oleh proyek. Pilihan yang valid adalah winexe, exe, library, dan netmodule. |
PageMarkup |
Parameter ITaskItem[] opsional. Menentukan daftar file XAML yang akan diproses. |
References |
Parameter ITaskItem[] opsional. Menentukan daftar referensi dari file ke rakitan yang berisi jenis yang digunakan dalam file XAML. |
RequirePass2ForMainAssembly |
Parameter output Boolean opsional. Menunjukkan apakah proyek berisi file XAML yang tidak dapat dilokalkan yang mereferensikan jenis lokal yang disematkan ke dalam rakitan utama. |
RequirePass2ForSatelliteAssembly |
Parameter output Boolean opsional. Menunjukkan apakah proyek berisi file XAML yang dapat dilokalkan yang mereferensikan jenis lokal yang disematkan di rakitan utama. |
RootNamespace |
Parameter String opsional. Menentukan namespace layanan akar untuk kelas yang ada di dalam proyek. RootNamespace juga digunakan sebagai namespace layanan default file kode terkelola yang dibuat jika file XAML yang sesuai tidak menyertakan atribut x:Class . |
SourceCodeFiles |
Parameter ITaskItem[] opsional. Menentukan daftar file kode untuk proyek saat ini. Daftar tidak menyertakan file kode terkelola khusus bahasa yang dibuat. |
UICulture |
Parameter String opsional. Menentukan rakitan satelit untuk kultur antarmuka pengguna tempat file format biner XAML yang dibuat disematkan. Jika UICulture tidak diatur, file format biner XAML yang dibuat akan disematkan di rakitan utama. |
XAMLDebuggingInformation |
Parameter Boolean opsional. Jika true, informasi diagnostik dibuat dan disertakan dalam XAML yang dikompilasi untuk membantu penelusuran kesalahan. |
Keterangan
Tugas MarkupCompilePass1 biasanya mengompilasi XAML ke dalam format biner dan membuat file kode. Jika file XAML berisi referensi ke jenis yang ditentukan dalam proyek yang sama, kompilasinya ke format biner ditunda oleh MarkupCompilePass1 ke pass kompilasi markup kedua (MarkupCompilePass2). File tersebut harus menunda kompilasinya karena harus menunggu sampai jenis yang ditentukan secara lokal dan direferensikan dikompilasi. Namun, jika file XAML memiliki atribut x:Class
, MarkupCompilePass1 akan membuat file kode khusus bahasa untuk file tersebut.
File XAML dapat dilokalkan jika berisi elemen yang menggunakan atribut x:Uid
:
<Page x:Class="WPFMSBuildSample.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Uid="Page1Uid"
>
...
</Page>
File XAML mereferensikan jenis yang ditentukan secara lokal saat mendeklarasikan namespace XML yang menggunakan nilai clr-namespace
untuk merujuk ke namespace layanan dalam proyek saat ini:
<Page x:Class="WPFMSBuildSample.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localNamespace="clr-namespace:WPFMSBuildSample"
>
<Grid>
<Grid.Resources>
<localNameSpace:LocalType x:Key="localType" />
</Grid.Resources>
...
</Grid>
</Page>
Jika ada file XAML yang dapat dilokalkan, atau mereferensikan jenis yang ditentukan secara lokal, diperlukan pass kompilasi markup kedua, yang mengharuskan menjalankan GenerateTemporaryTargetAssembly lalu MarkupCompilePass2.
Contoh
Contoh berikut menunjukkan cara mengonversi tiga file XAML Halaman menjadi file format biner. Page1 berisi referensi ke jenis, Class1
, yang berada di namespace layanan akar proyek dan oleh karena itu, tidak dikonversi ke file format biner dalam kode kompilasi markup ini. Sebagai gantinya, GenerateTemporaryTargetAssembly dijalankan dan diikuti oleh MarkupCompilePass2.
<Project xmlns="http://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>