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.
Proje 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>
İ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.
Meta 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.
Ö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>
KeepMetadata ö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:
-->
RemoveMetadata ö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:
-->
KeepDuplicates ö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