Öğe öğesi (MSBuild)

Kullanıcı tanımlı bir öğeyi ve meta verilerini içerir. MSBuild projesinde kullanılan her öğe bir ItemGroup öğenin alt öğesi olarak belirtilmelidir.

<Proje>
 <Itemgroup>
  <Kalem>

Sözdizimi

<Item Include="*.cs"
        Exclude="MyFile.cs"
        Condition="'String A'=='String B'">
    <ItemMetadata1>...</ItemMetadata1>
    <ItemMetadata2>...</ItemMetadata2>
</Item>

Meta verileri öznitelik olarak belirtme

MSBuild 15.1 veya sonraki sürümlerinde, geçerli öznitelik listesiyle çakışmayan bir ada sahip meta veriler isteğe bağlı olarak öznitelik olarak ifade edilebilir.

Örneğin, NuGet paketlerinin listesini belirtmek için normalde aşağıdaki söz dizimine benzer bir şey kullanırsınız.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

Ancak şimdi meta verileri öznitelik olarak geçirebilirsiniz Version ; örneğin, aşağıdaki söz diziminde:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>

Öznitelikler ve öğeler

Öznitelikler, alt ve üst öğeler aşağıdaki bölümlerde açıklanmaktadır.

Özellikler

Öznitelik Açıklama
Include İsteğe bağlı öznitelik.

Öğe listesine eklenecek dosya veya joker karakter.
Exclude İsteğe bağlı öznitelik.

Öğe listesinden dışlanması gereken dosya veya joker karakter.
Condition İsteğe bağlı öznitelik.

Değerlendirilecek koşul. Daha fazla bilgi için bkz . Koşullar.
Remove İsteğe bağlı öznitelik.

Öğe listesinden kaldırılacak dosya veya joker karakter.

MatchOnMetadata İsteğe bağlı öznitelik.

Remove Başvuruda bulunan öğelerin değerleriyle eşleştirmek yerine, belirtilen meta veri adlarında eşleşmesi için diğer öğelere başvuran öznitelikleri değiştirir.

Bu öznitelik yalnızca diğer öğelere (örneğin, Remove="@(Compile);@(Content)") başvurular içeren bir Remove öznitelikle birlikte belirtilirse geçerlidir. Öğeler'deki diğer ayrıntılar.
MatchOnMetadataOptions İsteğe bağlı öznitelik.

tarafından MatchOnMetadatakullanılan dize eşleştirme stratejisini belirtir. Olası değerler , CaseInsensitiveveya PathLikeşeklindedirCaseSensitive. Varsayılan değer şudur: CaseInsensitive.
KeepDuplicates İsteğe bağlı öznitelik.

Var olan bir öğenin tam bir kopyasıysa, bir öğenin hedef gruba eklenip eklenmeyeceğini belirtir. Kaynak ve hedef öğe aynı Include değere ama farklı meta veriye sahipse, öğesi olarak ayarlanmış falseolsa KeepDuplicates bile eklenir. Daha fazla bilgi için bkz . Öğeler.

Bu öznitelik yalnızca içindeki bir öğe ItemGroup Targetiçin belirtilmişse geçerlidir.
KeepMetadata İsteğe bağlı öznitelik.

Hedef öğelere eklenecek kaynak öğelerin meta verileri. Yalnızca adları noktalı virgülle ayrılmış listede belirtilen meta veriler kaynak öğeden hedef öğeye aktarılır. Daha fazla bilgi için bkz . Öğeler.

Bu öznitelik yalnızca içindeki bir öğe ItemGroup Targetiçin belirtilmişse geçerlidir.
RemoveMetadata İsteğe bağlı öznitelik.

Kaynak öğelerin hedef öğelere aktarılmaması için meta veriler. Adları noktalı virgülle ayrılmış ad listesinde yer alan meta veriler dışında tüm meta veriler kaynak öğeden hedef öğeye aktarılır. Daha fazla bilgi için bkz . Öğeler.

Bu öznitelik yalnızca içindeki bir öğe ItemGroup Targetiçin belirtilmişse geçerlidir.
Update İsteğe bağlı öznitelik. (Yalnızca Visual Studio 2017 veya sonraki sürümlerde .NET Core projelerinde kullanılabilir.)

Bir öğenin meta verilerini değiştirmenizi sağlar; genellikle bir öğe grubu başlangıçta belirtildikten sonra (joker karakter gibi) belirli öğelerin varsayılan meta verilerini geçersiz kılmak için kullanılır.

Bu öznitelik yalnızca içinde olmayan Targetbir ItemGroup öğe için belirtilmişse geçerlidir.

Alt öğeleri

Öğe Açıklama
ItemMetadata Öğe meta veri değerini içeren kullanıcı tanımlı öğe meta veri anahtarı. Bir öğede sıfır veya daha fazla ItemMetadata öğe olabilir.

Üst öğeler

Öğe Açıklama
Itemgroup Öğeler için gruplandırma öğesi.

Açıklamalar

Item öğeleri, derleme sistemine girişleri tanımlar ve kullanıcı tanımlı koleksiyon adlarına göre öğe koleksiyonları halinde gruplandırılır. Bu öğe koleksiyonları, derleme işleminin adımlarını gerçekleştirmek için koleksiyonlardaki tek tek öğeleri kullanan görevler için parametre olarak kullanılabilir. Daha fazla bilgi için bkz . Öğeler.

@(<myType) gösterimini kullanmak, myType>> türünde <bir öğe koleksiyonunun noktalı virgülle ayrılmış dize listesine genişletilmesine ve bir parametreye geçirilmesine olanak tanır. Parametre türündeyse string, parametrenin değeri noktalı virgülle ayrılmış öğe listesidir. Parametre bir dize dizisi ()string[] ise, her öğe noktalı virgüllerin konumuna göre diziye eklenir. Görev parametresi türündeyse ITaskItem[]değer, öğe koleksiyonunun içeriği ve ekli meta verilerdir. Noktalı virgül dışında bir karakter kullanarak her öğeyi sınırlandırmak için @(<myType>, '<ayırıcı>') söz dizimini kullanın.

MSBuild altyapısı ve ? /***/*.cs gibi özyinelemeli joker karakterler gibi joker karakterleri değerlendirebilir. Daha fazla bilgi için bkz . Öğeler.

Örnekler

Aşağıdaki kod örneği, türünde CSFileiki öğenin nasıl bildir yapılacağını gösterir. bildirilen ikinci öğe olarak ayarlanmış HelloWorldmeta verileri MyMetadata içerir.

<ItemGroup>
    <CSFile Include="engine.cs; form.cs" />
    <CSFile Include="main.cs" >
        <MyMetadata>HelloWorld</MyMetadata>
    </CSFile>
</ItemGroup>

Aşağıdaki kod örneği, glob aracılığıyla eklenen somefile.cs adlı bir dosyadaki meta verileri değiştirmek için özniteliğinin nasıl kullanılacağını Update gösterir. (Yalnızca Visual Studio 2017 veya sonraki sürümlerde .NET Core projelerinde kullanılabilir.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>

Ayrıca bkz.