Bagikan melalui


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>

Baca juga