Elemen Item (MSBuild)
Berisi item yang ditentukan pengguna dan metadatanya. Setiap item yang digunakan dalam proyek MSBuild harus ditentukan sebagai turunan dari elemen ItemGroup
.
<Proyek>
<ItemGroup>
<Benda>
Sintaks
<Item Include="*.cs"
Exclude="MyFile.cs"
Condition="'String A'=='String B'">
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
Tentukan metadata sebagai atribut
Di MSBuild 15.1 atau yang lebih baru, metadata apa pun dengan nama yang tidak bertentangan dengan daftar atribut saat ini dapat secara opsional dinyatakan sebagai atribut.
Misalnya, untuk menentukan daftar paket NuGet, Anda biasanya akan menggunakan sesuatu seperti sintaks berikut.
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>9.0.1-beta1<Version>
</PackageReference>
</ItemGroup>
Namun, sekarang, Anda dapat meneruskan metadata Version
sebagai atribut, seperti dalam sintaks berikut:
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>
Atribut dan elemen
Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.
Atribut
Atribut | Deskripsi |
---|---|
Include |
Atribut opsional. File atau wildcard untuk disertakan dalam daftar item. |
Exclude |
Atribut opsional. File atau wildcard yang akan dikecualikan dari daftar item. |
Condition |
Atribut opsional. Kondisi yang akan dievaluasi. Untuk informasi selengkapnya, lihat Syarat-syarat. |
Remove |
Atribut opsional. File atau wildcard yang akan dihapus dari daftar item. |
MatchOnMetadata |
Atribut opsional. Memodifikasi atribut Remove yang mereferensikan item lain untuk dicocokkan pada nama metadata yang ditentukan alih-alih mencocokkan pada nilai item yang direferensikan. Atribut ini hanya valid jika ditentukan bersama dengan atribut Remove yang hanya berisi referensi ke item lain (misalnya, Remove="@(Compile);@(Content)" ). Detail selengkapnya dalam Item. |
MatchOnMetadataOptions |
Atribut opsional. Menentukan strategi pencocokan string yang digunakan oleh MatchOnMetadata . Kemungkinan nilainya adalah CaseSensitive , CaseInsensitive , atau PathLike . Nilai defaultnya adalah CaseInsensitive . |
KeepDuplicates |
Atribut opsional. Menentukan apakah item harus ditambahkan ke grup target jika merupakan duplikat yang tepat dari item yang ada. Jika item sumber dan target memiliki nilai Include yang sama tetapi metadata yang berbeda, item ditambahkan meskipun KeepDuplicates diatur ke false . Untuk informasi selengkapnya, lihat Item.Atribut ini hanya valid jika ditentukan untuk item dalam ItemGroup yang ada di Target . |
KeepMetadata |
Atribut opsional. Metadata untuk item sumber yang akan ditambahkan ke item target. Hanya metadata yang namanya ditentukan dalam daftar yang dibatasi titik koma yang ditransfer dari item sumber ke item target. Untuk informasi selengkapnya, lihat Item. Atribut ini hanya valid jika ditentukan untuk item dalam ItemGroup yang ada di Target . |
RemoveMetadata |
Atribut opsional. Metadata untuk item sumber agar tidak ditransfer ke item target. Semua metadata ditransfer dari item sumber ke item target kecuali metadata yang namanya terkandung dalam daftar nama yang dibatasi titik koma. Untuk informasi selengkapnya, lihat Item. Atribut ini hanya valid jika ditentukan untuk item dalam ItemGroup yang ada di Target . |
Update |
Atribut opsional. (Hanya tersedia untuk proyek .NET Core pada Visual Studio 2017 atau yang lebih baru.) Memungkinkan Anda mengubah metadata item; biasanya digunakan untuk mengambil alih metadata default item tertentu setelah sekelompok item pada awalnya ditentukan (seperti dengan kartubebas). Atribut ini hanya valid jika ditentukan untuk item dalam ItemGroup yang tidak ada dalam Target . |
Elemen anak
Elemen | Deskripsi |
---|---|
ItemMetadata | Kunci metadata item yang ditentukan pengguna, yang berisi nilai metadata item. Mungkin ada nol atau lebih elemen ItemMetadata dalam item. |
Elemen induk
Elemen | Deskripsi |
---|---|
ItemGroup | Elemen pengelompokan untuk item. |
Keterangan
Elemen Item
menentukan input ke dalam sistem build, dan dikelompokkan ke dalam koleksi item berdasarkan nama koleksi yang ditentukan pengguna. Koleksi item ini dapat digunakan sebagai parameter untuk tugas, yang menggunakan item individual dalam koleksi untuk melakukan langkah-langkah proses build. Untuk informasi selengkapnya, lihat Item.
Menggunakan notasi @(<myType>) memungkinkan kumpulan item jenis <myType> untuk diperluas ke daftar string yang dibatasi titik koma, dan diteruskan ke parameter. Jika parameter berjenis string
, maka nilai parameter adalah daftar elemen, dipisahkan oleh titik koma. Jika parameter adalah array string (string[]
), maka setiap elemen dimasukkan ke dalam array berdasarkan lokasi titik koma. Jika parameter tugas berjenis ITaskItem[]
, maka nilainya adalah konten koleksi item bersama dengan metadata apa pun yang dilampirkan. Untuk memisahkan setiap item dengan menggunakan karakter selain titik koma, gunakan sintaks @(<myType>, '<separator>').
Komputer MSBuild dapat mengevaluasi wildcard seperti *
dan ?
wildcard berulang seperti /**/*.cs. Untuk informasi selengkapnya, lihat Item.
Contoh
Contoh kode berikut menunjukkan cara mendeklarasikan dua item berjenis CSFile
. Item kedua yang dinyatakan berisi metadata yang MyMetadata
telah diatur ke HelloWorld
.
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>
Contoh kode berikut menunjukkan cara menggunakan atribut Update
untuk memodifikasi metadata dalam file yang disebut somefile.cs yang disertakan melalui glob. (Hanya tersedia untuk proyek .NET Core pada Visual Studio 2017 atau yang lebih baru.)
<ItemGroup>
<Compile Update="somefile.cs"> // or Update="*.designer.cs"
<MetadataKey>MetadataValue</MetadataKey>
</Compile>
</ItemGroup>