Mengimpor elemen (MSBuild)
Mengimpor isi dari satu file proyek ke file proyek lain.
<Impor><Proyek>
Sintaks
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Atribut dan elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Atribut
Atribut | Deskripsi |
---|---|
Project |
Atribut yang diperlukan. Jalur file proyek yang akan diimpor. Jalur ini dapat mencakup wildcard. File yang cocok diimpor dalam urutan yang diurutkan. Dengan menggunakan fitur ini, Anda dapat menambahkan kode ke proyek hanya dengan menambahkan file kode ke direktori. |
Condition |
Atribut opsional. Kondisi yang akan dievaluasi. Untuk informasi selengkapnya, lihat Syarat-syarat. |
Label |
Atribut opsional. Menerapkan pengidentifikasi ke elemen impor ini. |
Sdk |
Atribut opsional. Mereferensikan SDK proyek. |
Elemen anak
Tidak ada
Elemen induk
Elemen | Deskripsi |
---|---|
Project | Elemen akar yang diperlukan dari file proyek MSBuild. |
ImportGroup | Berisi kumpulan Import elemen yang dikelompokkan di bawah kondisi opsional. |
Keterangan
Dengan menggunakan Import
elemen, Anda dapat menggunakan kembali kode yang umum untuk banyak file proyek. Menggunakan impor memudahkan untuk mempertahankan kode, karena pembaruan apa pun yang Anda buat ke kode bersama disebarluaskan ke semua proyek yang mengimpornya.
Menurut konvensi, file proyek bersama yang diimpor disimpan sebagai .targets
file, tetapi file tersebut adalah file proyek MSBuild standar. MSBuild tidak mencegah Anda mengimpor proyek yang memiliki ekstensi nama file yang berbeda, tetapi kami sarankan Anda menggunakan .targets
ekstensi untuk konsistensi.
Jalur relatif dalam proyek yang diimpor ditafsirkan relatif terhadap direktori proyek impor (dengan beberapa pengecualian yang dijelaskan nanti dalam paragraf ini). Oleh karena itu, jika file proyek diimpor ke dalam beberapa file proyek di lokasi yang berbeda, jalur relatif dalam file proyek yang diimpor akan ditafsirkan secara berbeda untuk setiap proyek yang diimpor. Ada dua pengecualian. Salah satu pengecualian adalah bahwa dalam Import
elemen, jalur selalu ditafsirkan relatif terhadap proyek yang berisi Import
elemen. Pengecualian lain adalah UsingTask
selalu menginterpretasikan jalur relatif untuk AssemblyFile
atribut relatif terhadap file yang berisi UsingTask
elemen.
Semua properti cadangan MSBuild yang terkait dengan file proyek yang direferensikan dalam proyek yang diimpor (misalnya, MSBuildProjectDirectory
dan MSBuildProjectFile
) diberi nilai berdasarkan file proyek impor.
Jika proyek yang diimpor tidak memiliki DefaultTargets
atribut, proyek yang diimpor diperiksa dalam urutan impor, dan nilai atribut pertama yang ditemukan DefaultTargets
digunakan. Misalnya, jika ProjectA mengimpor ProjectB dan ProjectC (dalam urutan tersebut), dan ProjectB mengimpor ProjectD, MSBuild terlebih dahulu mencari DefaultTargets
yang ditentukan pada ProjectA, lalu ProjectB, lalu ProjectD, dan akhirnya ProjectC.
Skema proyek yang diimpor identik dengan proyek standar. Meskipun MSBuild mungkin dapat membangun proyek yang diimpor, itu tidak mungkin karena proyek yang diimpor biasanya tidak berisi informasi tentang properti mana yang akan ditetapkan atau urutan untuk menjalankan target. Proyek yang diimpor tergantung pada proyek tempat proyek diimpor untuk memberikan informasi tersebut.
Wildcard
Dalam .NET Framework 4, MSBuild memungkinkan wildcard di atribut Project. Ketika ada wildcard, semua kecocokan yang ditemukan diurutkan (untuk reproduktifitas), dan kemudian diimpor dalam urutan tersebut seolah-olah urutan telah diatur secara eksplisit.
Ini berguna jika Anda ingin menawarkan titik ekstensibilitas sehingga orang lain dapat mengimpor file tanpa mengharuskan Anda untuk secara eksplisit menambahkan nama file ke file impor. Untuk tujuan ini, Microsoft.Common.Targets berisi baris berikut di bagian atas file.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Contoh
Contoh berikut menunjukkan proyek yang memiliki beberapa item dan properti dan mengimpor file proyek umum.
<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<resourcefile>Strings.resx</resourcefile>
<compiledresources>
$(O)\$(MSBuildProjectName).Strings.resources
</compiledresources>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" />
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<Import Project="$(CommonLocation)\General.targets" />
</Project>