Aracılığıyla paylaş


MSBuild öğeleri

MSBuild öğeler Yapı sistemine sinyalidir ve bunlar genellikle dosyaları temsil eder.Öğeleri kendi öğe adlarını temel alarak madde türleri içine gruplandırılmıştır.Görevler için parametre kullanılabilecek öğeleri listesi öğesi türleri olarak adlandırılır.Görevler oluşturma işleminin adımları gerçekleştirmek için öğe değerlerini kullanın.

Maddeleri ait oldukları öğe türüne göre adlandırılır çünkü koşulları "madde" ve "öğe değeri" birbirinin yerine kullanılabilir.

Bu konuda

  • Öğeleri bir proje dosyası oluşturma

  • Yürütme sırasında öğeleri oluşturma

  • Proje dosyasında başvurulan öğeleri

  • Öğeleri belirtmek için joker karakterleri kullanma

  • Dışlama özniteliğini kullanma

  • Öğe meta

    • Proje dosyası içinde öğe meta başvurma

    • İyi bilinen öğe meta

    • Meta verileri kullanarak öğe türlerini dönüştürme

  • Madde tanımları

  • Öğeleri bir ItemGroup bir hedef için öznitelikleri

    • Özniteliği kaldırın

    • KeepMetadata özniteliği

    • RemoveMetadata özniteliği

    • KeepDuplicates özniteliği

Öğeleri bir proje dosyası oluşturma

Proje dosyasındaki öğeleri öğelerinin alt öğesi olarak bildirmek bir ItemGroup öğesi.Alt öğe öğe türü addır.Include Ögesinin özniteliği ile bu madde türüne dahil edilecek öğeleri (dosyaları) belirtir.Örneğin, aşağıdaki xml adlı bir öğe türü oluşturur Compile, iki dosya içerir.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

"file2.cs" madde "file1.cs" maddesini görünmüyor Bunun yerine, dosya adı için değerler listesi eklenen Compile öğesi türü.Bir öğe türünden bir yapı değerlendirme aşamasında bir öğeyi kaldıramazsınız.

Her iki dosya bir bildirerek aşağıdaki xml aynı öğesi türü oluşturur Include özniteliği.Fark dosya adlarını noktalı virgülle ayrılır.

<ItemGroup>
    <Compile Include = "file1.cs;file2.cs"/>
</ItemGroup>

Yürütme sırasında öğeleri oluşturma

Dışında olan öğeleri hedef öğelerin bir yapı değerlendirme aşamasında değerler atanır.Sonraki yürütme aşamasında öğeleri oluşturulan veya değiştirilen aşağıdaki yöntemlerle:

  • Herhangi bir görev, bir öğeyi göster.Bir öğeyi göstermek için görev bir alt öğesi olması gerekir Çıkış öğesinin sahip bir ItemName özniteliği.

  • CreateItem görev, bir öğenin Yayımla.Bu kullanımı önerilmiyor.

  • .net Framework 3.5, Başlangıç Target öğeleri içerebilir ItemGroup öğeleri içerebilir öğeleri öğe.

Proje dosyasında başvurulan öğeleri

Proje dosyası içinde öğe türleri başvurmak için sözdizimini kullanın @(ItemType).Örneğin, kullanarak önceki örnekte öğesi türü başvuru @(Compile).Bu sözdizimini kullanarak görev parametre olarak öğesi türünü belirterek görevleri için öğeleri geçirebilirsiniz.Daha fazla bilgi için bkz. Nasıl yapılır: yapı dosyaları seçin.

Varsayılan olarak genişletilmiş durumda olduğunda öğesi türünün öğelerini noktalı virgülle (;) ayrılır.Sözdizimi kullanabilirsiniz @(ItemType, 'ayırıcı') varsayılan dışında bir ayırıcı belirtmek için.Daha fazla bilgi için bkz. Nasıl yapılır: bir öğe listesi virgülle ayrılmış olarak görüntüleme.

Öğeleri belirtmek için joker karakterleri kullanma

Kullanabileceğiniz **, *, ve?her dosyayı ayrı olarak listeleniyor yerine bir yapı için giriş olarak bir dosya grubunu belirtmek için joker karakterler.

  • ?joker karakteri tek bir karakterle eşleşir.

  • * Joker karakter sıfır veya daha çok karakterle eşleşir.

  • ** Joker karakter sırası kısmi bir yol ile eşleşir.

Örneğin, proje dosyanızda aşağıdaki öğeyi kullanarak proje dosyasını içeren dizinde .cs dosyaları belirtebilirsiniz.

<CSFile Include="*.cs"/>

Aşağıdaki öğe, d: sürücüsündeki tüm .vb dosyaları seçer:

<VBFile Include="D:/**/*.vb"/>

Joker karakterler hakkında daha fazla bilgi için bkz: Nasıl yapılır: yapı dosyaları seçin.

Dışlama özniteliğini kullanma

İtem öðeleri içerebilir Exclude özniteliği, belirli öğeleri (dosyaları) öğesi türünden dışlar.Exclude Özniteliği genelde joker karakter ile birlikte kullanılır.Örneğin, aşağıdaki xml dışında CSFile öğesi türü dizindeki her .cs dosyası ekler DoNotBuild.cs dosyası.

<ItemGroup>
    <CSFile  Include="*.cs"  Exclude="DoNotBuild.cs"/>
</ItemGroup>

Exclude Özniteliği tarafından eklenen öğeleri etkiler Include her ikisini içeren item öðesinin öznitelik.Aşağıdaki örnek önceki öğeyi öğe eklendi, Form1.cs dosyasýný dışarıda mıydı.

<Compile Include="*.cs" />
<Compile Include="*.res" Exclude="Form1.cs">

Daha fazla bilgi için bkz. Nasıl yapılır: oluşturma dosyaları dışlayın.

Öğe meta

Meta veri bilgileri ek öğeler içerebilir Include ve Exclude öznitelikleri.Bu meta veriler, toplu iş görevleri ve hedefleri veya öğeleri hakkında daha fazla bilgi gerektiren görevler tarafından kullanılır.Daha fazla bilgi için bkz. MSBuild toplu iş dosyası.

Meta veri öğesi öğesi alt öğeleri olarak proje dosyasında bildirilen anahtar-değer çiftleri topluluğudur.Alt öğenin adı meta veri adı ve değeri alt öğenin meta veri değeridir.

Meta veriler içeren item öðesi ile ilişkilidir.Örneğin, aşağıdaki xml ekler Culture meta veri değeri olan Fr "one.cs" ve "two.cs" öğeleri CSFile için öğe türü.

<ItemGroup>
    <CSFile Include="one.cs;two.cs">
        <Culture>Fr</Culture>
    </CSFile>
</ItemGroup>

Bir öğeyi sıfır veya daha fazla meta veri değerleri olabilir.Meta veri değerlerini istediğiniz zaman değiştirebilirsiniz.Meta verileri için boş bir değer ayarlarsanız, etkili bir şekilde build kaldırmanız.

ms171453.collapse_all(tr-tr,VS.110).gifProje dosyası içinde öğe meta başvurma

Proje dosyası içinde öğe meta sözdizimini kullanarak %(başvuruItemMetadataName).Belirsizlik varsa, öğe türünün adını kullanarak bir başvuru niteleyebilirsiniz.For example, belirtebileceğiniz %(ItemType.ItemMetaDataName).Aşağıdaki örnek, ileti görev toplu görüntü meta verileri kullanır.Toplu işleme için öğe meta kullanma hakkında daha fazla bilgi için bkz: Görev toplu iş dosyası içinde öğe meta.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Stuff Include="One.cs" >
            <Display>false</Display>
        </Stuff>
        <Stuff Include="Two.cs">
            <Display>true</Display>
        </Stuff>
    </ItemGroup>
    <Target Name="Batching">
        <Message Text="@(Stuff)" Condition=" '%(Display)' == 'true' "/>
    </Target>
</Project>

ms171453.collapse_all(tr-tr,VS.110).gifİyi bilinen öğe meta

Bir öğe türü için bir öğe eklendiğinde, iyi bilinen bazı meta veriler o maddeye atanır.Örneğin, iyi bilinen meta verileri tüm öğeleri sahip %(Filename), öğenin dosya adı olan bir değerdir.Daha fazla bilgi için bkz. MSBuild tanınmış öğe meta.

ms171453.collapse_all(tr-tr,VS.110).gifMeta verileri kullanarak öğe türlerini dönüştürme

Meta verileri kullanarak yeni öğe listelerine göre madde listeleri dönüştürebilirsiniz.Örneğin, bir öğe türü dönüştürme CppFiles , .cpp dosyaları ifadesini kullanarak, .obj dosyaları karşılık gelen bir liste halinde temsil eden öğeleri vardır @(CppFiles -> '%(Filename).obj').

Aşağıdaki kod oluşturur bir CultureResource öğesi türünün tüm kopyalarını içeren EmbeddedResource içeren öğelerin Culture meta veriler.Culture Meta veri değeri olur yeni meta veri değeri CultureResource.TargetDirectory.

<Target Name="ProcessCultureResources">
    <ItemGroup>
        <CultureResource Include="@(EmbeddedResource)"
            Condition="'%(EmbeddedResource.Culture)' != ''">
            <TargetDirectory>%(EmbeddedResource.Culture) </TargetDirectory>
        </CultureResource>
    </ItemGroup>
</Target>

Daha fazla bilgi için bkz. MSBuild dönüşümler.

Madde tanımları

.net Framework 3. 5 ' başlayarak, varsayılan meta veri herhangi bir öğe türünü kullanarak ekleyebileceğiniz ItemDefinitionGroup öğesinin.İyi bilinen meta veriler gibi varsayılan meta veri öğesi türünün belirttiğiniz tüm öğeleri ile ilişkilidir.Varsayılan meta veri öğesi tanımında açıkça geçersiz kılabilirsiniz.Örneğin, aşağıdaki xml verir Compile "one.cs" ve "three.cs" meta veri öğelerini BuildDay "Pazartesi" değerine sahip.Kod öğesi "two.cs" meta verileri verir BuildDay "Salı" değerine sahip.

<ItemDefinitionGroup>
    <Compile>
        <BuildDay>Monday</BuildDay>
    </Compile>
</ItemDefinitionGroup>
<ItemGroup>
    <Compile Include="one.cs;three.cs" />
    <Compile Include="two.cs">
        <BuildDay>Tuesday</BuildDay>
    </Compile>
</ItemGroup>

Daha fazla bilgi için bkz. Madde tanımları.

Öğeleri bir ItemGroup bir hedef için öznitelikleri

.net Framework 3.5, Başlangıç Target öğeleri içerebilir ItemGroup öğeleri içerebilir öğeleri öğe.Bir madde için belirtilen öznitelikler bu bölümünde geçerli bir ItemGroup olan bir Target.

ms171453.collapse_all(tr-tr,VS.110).gifÖzniteliği kaldırın

Öğeler bir ItemGroup bir hedefi içerebilir Remove öznitelik, öğe türünden (dosyaları) belirli öğeleri kaldırır.Bu öznitelik, .NET Framework 3. 5 ' kullanılmaya başlandı.

Aşağıdaki örnek, her .config dosyası derleme öğesi türünden kaldırır.

<Target>
    <ItemGroup>
        <Compile Remove="*.config"/>
    </ItemGroup>
</Target>

ms171453.collapse_all(tr-tr,VS.110).gifKeepMetadata özniteliği

Bir öğe içinde bir hedef olarak oluşturulursa, item öðesini içerebilir KeepMetadata özniteliği.Bu öznitelik belirtilmezse, yalnızca adlarını noktalı virgülle ayrılmış listesi içinde belirtilen meta veri kaynağı öğesinden hedef öğesi transfer edilir.Bu öznitelik için boş bir değer bunu belirlemek değil ile aynıdır.KeepMetadata Özniteliği, .NET Framework 4. 5 ' oluşmuştur.

Aşağıdaki örnek, nasıl kullanılacağını gösterir KeepMetadata özniteliği.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">

    <ItemGroup>
        <FirstItem Include="rhinoceros">
            <Class>mammal</Class>
            <Size>large</Size>
        </FirstItem>

    </ItemGroup>
    <Target Name="MyTarget">
        <ItemGroup>
            <SecondItem Include="@(FirstItem)" KeepMetadata="Class" />
        </ItemGroup>

        <Message Text="FirstItem: %(FirstItem.Identity)" />
        <Message Text="  Class: %(FirstItem.Class)" />
        <Message Text="  Size:  %(FirstItem.Size)"  />

        <Message Text="SecondItem: %(SecondItem.Identity)" />
        <Message Text="  Class: %(SecondItem.Class)" />
        <Message Text="  Size:  %(SecondItem.Size)"  />
    </Target>
</Project>

<!--
Output:
  FirstItem: rhinoceros
    Class: mammal
    Size:  large
  SecondItem: rhinoceros
    Class: mammal
    Size: 
-->

ms171453.collapse_all(tr-tr,VS.110).gifRemoveMetadata özniteliği

Bir öğe içinde bir hedef olarak oluşturulursa, item öðesini içerebilir RemoveMetadata özniteliği.Bu öznitelik belirtilmezse, tüm meta veri kaynağı öğesinden meta verileri dışında hedef öğesi adları adları noktalı virgülle ayrılmış listesi bulunan transfer edilir.Bu öznitelik için boş bir değer bunu belirlemek değil ile aynıdır.RemoveMetadata Özniteliği, .NET Framework 4. 5 ' oluşmuştur.

Aşağıdaki örnek, nasıl kullanılacağını gösterir RemoveMetadata özniteliği.

<Project ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <MetadataToRemove>Size;Material</MetadataToRemove>
    </PropertyGroup>

    <ItemGroup>
        <Item1 Include="stapler">
            <Size>medium</Size>
            <Color>black</Color>
            <Material>plastic</Material>
        </Item1>
    </ItemGroup>

    <Target Name="MyTarget">
        <ItemGroup>
            <Item2 Include="@(Item1)" RemoveMetadata="$(MetadataToRemove)" />
        </ItemGroup>

        <Message Text="Item1: %(Item1.Identity)" />
        <Message Text="  Size:     %(Item1.Size)" />
        <Message Text="  Color:    %(Item1.Color)" />
        <Message Text="  Material: %(Item1.Material)" />
        <Message Text="Item2: %(Item2.Identity)" />
        <Message Text="  Size:     %(Item2.Size)" />
        <Message Text="  Color:    %(Item2.Color)" />
        <Message Text="  Material: %(Item2.Material)" />
    </Target>
</Project>

<!--
Output: 
  Item1: stapler
    Size:     medium
    Color:    black
    Material: plastic
  Item2: stapler
    Size:     
    Color:    black
    Material: 
-->

ms171453.collapse_all(tr-tr,VS.110).gifKeepDuplicates özniteliği

Bir öğe içinde bir hedef olarak oluşturulursa, item öðesini içerebilir KeepDuplicates özniteliği.KeepDuplicatesolan bir Boolean özniteliği, varolan öğeyi tamamen aynısı madde ise, öğenin hedef grubuna eklenip eklenmeyeceğini belirtir.

Kaynak ve hedef öğesi farklı meta veriler ancak aynı INCLUDE değeri varsa, madde eklenmiş olsa da, KeepDuplicates ayarlamak false.Bu öznitelik için boş bir değer bunu belirlemek değil ile aynıdır.KeepDuplicates Özniteliği, .NET Framework 4. 5 ' oluşmuştur.

Aşağıdaki örnek, nasıl kullanılacağını gösterir KeepDuplicates özniteliği.

<Project ToolsVersion="4.0" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <Item1 Include="hourglass;boomerang" />
        <Item2 Include="hourglass;boomerang" />
    </ItemGroup>

    <Target Name="MyTarget">
        <ItemGroup>
            <Item1 Include="hourglass" KeepDuplicates="false" />
            <Item2 Include="hourglass" />
        </ItemGroup>

        <Message Text="Item1: @(Item1)" />
        <Message Text="  %(Item1.Identity)  Count: @(Item1->Count())" />
        <Message Text="Item2: @(Item2)" />
        <Message Text="  %(Item2.Identity)  Count: @(Item2->Count())" />
    </Target>
</Project>

<!--
Output: 
  Item1: hourglass;boomerang
    hourglass  Count: 1
    boomerang  Count: 1
  Item2: hourglass;boomerang;hourglass
    hourglass  Count: 2
    boomerang  Count: 1
-->

Ayrıca bkz.

Görevler

Nasıl yapılır: yapı dosyaları seçin

Nasıl yapılır: oluşturma dosyaları dışlayın

Nasıl yapılır: bir öğe listesi virgülle ayrılmış olarak görüntüleme

Başvuru

İtem öðesini (MSBuild)

Kavramlar

Madde tanımları

MSBuild toplu iş dosyası

Diğer Kaynaklar

MSBuild kavramları

MSBuild