Menggunakan target yang sama dalam beberapa file proyek
Jika Anda telah menulis beberapa file proyek MSBuild, Anda mungkin telah menemukan bahwa Anda perlu menggunakan tugas dan target yang sama dalam file proyek yang berbeda. Alih-alih menyertakan deskripsi lengkap tugas atau target tersebut di setiap file proyek, Anda dapat menyimpan target dalam file proyek terpisah lalu mengimpor proyek tersebut ke proyek lain yang perlu menggunakan target.
Menggunakan elemen Impor
Elemen Import
ini digunakan untuk menyisipkan satu file proyek ke dalam file proyek lain. File proyek yang sedang diimpor harus berupa file proyek MSBuild yang valid dan berisi XML yang terbentuk dengan baik. Atribut Project
menentukan jalur ke file proyek yang diimpor. Untuk informasi selengkapnya tentang elemen Import
, lihat Mengimpor elemen (MSBuild).
Untuk mengimpor proyek
Tentukan, dalam file proyek impor, semua properti dan item yang digunakan sebagai parameter untuk properti dan item dalam proyek yang diimpor.
Gunakan elemen
Import
untuk mengimpor proyek. Contohnya:<Import Project="MyCommon.targets"/>
Mengikuti elemen
Import
, tentukan semua properti dan item yang harus mengganti definisi default properti dan item dalam proyek yang diimpor.
Urutan evaluasi
Ketika MSBuild mencapai elemen Import
, proyek yang diimpor secara efektif dimasukkan ke dalam proyek impor di lokasi elemen Import
. Oleh karena itu, lokasi elemen Import
dapat memengaruhi nilai properti dan item. Penting untuk memahami properti dan item yang ditetapkan oleh proyek yang diimpor, serta properti dan item yang digunakan proyek yang diimpor.
Saat proyek dibangun, semua properti dievaluasi terlebih dahulu, diikuti oleh item. Misalnya, XML berikut menentukan file proyek yang diimpor MyCommon.targets:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyCommon</Name>
</PropertyGroup>
<Target Name="Go">
<Message Text="Name=$(Name)"/>
</Target>
</Project>
XML berikut mendefinisikan MyApp.proj, yang mengimpor MyCommon.targets:
<Project
DefaultTargets="Go"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyApp</Name>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>
Ketika proyek mengompilasi, pesan berikut akan ditampilkan:
Name="MyCommon"
Karena proyek diimpor setelah properti Name
ditentukan di MyApp.proj, definisi Name
di MyCommon.targets mengambil alih definisi di MyApp.proj. Jika proyek diimpor sebelum nama properti ditentukan, build akan menampilkan pesan berikut:
Name="MyApp"
Menggunakan pendekatan berikut saat mengimpor proyek
Tentukan, dalam file proyek, semua properti dan item yang digunakan sebagai parameter untuk properti dan item dalam proyek yang diimpor.
Impor proyek.
Tentukan dalam file proyek semua properti dan item yang harus mengganti definisi default properti dan item dalam proyek yang diimpor.
Contoh 1
Contoh kode berikut menunjukkan file MyCommon.targets yang diimpor contoh kode kedua. File .targets mengevaluasi properti dari proyek impor untuk mengonfigurasi build.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
<Optimize Condition="'$(Flavor)'=='RETAIL'">yes</Optimize>
<appname>$(MSBuildProjectName)</appname>
<PropertyGroup>
<Target Name="Build">
<Csc Sources="hello.cs"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe"/>
</Target>
</Project>
Contoh 2
Contoh kode berikut mengimpor file MyCommon.targets.
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor>RETAIL</Flavor>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk