MSBuild görevi

Başka bir MSBuild projesinden MSBuild projeleri oluşturur.

Parametreler

Aşağıdaki tabloda MSBuild görevinin parametreleri açıklanmaktadır.

Parametre Açıklama
BuildInParallel İsteğe bağlı Boolean parametresi.

trueise, Projects parametresinde belirtilen projeler mümkünse paralel olarak oluşturulur. Varsayılan false değeridir.
Projects Gerekli ITaskItem[] parametresi.

Derlenecek proje dosyalarını belirtir.
Properties İsteğe bağlı String parametresi.

Alt projeye genel özellikler olarak uygulanacak özellik adı/değer çiftlerinin noktalı virgülle ayrılmış listesi. Bu parametreyi belirttiğinizde, MSBuild.exeile oluştururken -property anahtarına sahip özellikleri ayarlamaya işlevsel olarak eşdeğerdir. Örneğin:

Properties="Configuration=Debug;Optimize=$(Optimize)"

Properties parametresi aracılığıyla projeye özellikler geçirdiğinizde, proje dosyası zaten yüklenmiş olsa bile MSBuild projenin yeni bir örneğini oluşturabilir. MSBuild, belirli bir proje yolu ve benzersiz bir genel özellikler kümesi için tek bir proje örneği oluşturur. Örneğin, bu davranış Configuration=Release ile myproject.proj çağıran birden çok MSBuild görevi oluşturmanıza olanak tanır ve myproject.proj tek bir örneğini alırsınız (görevde benzersiz özellik belirtilmemişse). MSBuild tarafından henüz görülmemiş bir özellik belirtirseniz, MSBuild projenin diğer örneklerine paralel olarak oluşturulabilen yeni bir proje örneği oluşturur. Örneğin, Bir Yayın yapılandırması hata ayıklama yapılandırmasıyla aynı anda oluşturulabilir.
RebaseOutputs İsteğe bağlı Boolean parametresi.

trueise, oluşturulan projelerdeki hedef çıkış öğelerinin göreli yolları, yolları çağıran projeye göre ayarlanmıştır. Varsayılan false değeridir.
RemoveProperties İsteğe bağlı String parametresi.

Kaldırılacak genel özellikler kümesini belirtir.
RunEachTargetSeparately İsteğe bağlı Boolean parametresi.

trueise, MSBuild görevi, MSBuild'e geçirilen listedeki her hedefi aynı anda değil birer birer çağırır. Bu parametrenin true olarak ayarlanması, daha önce çağrılan hedefler başarısız olsa bile sonraki hedeflerin çağrıldığını garanti eder. Aksi takdirde, derleme hatası sonraki tüm hedeflerin çağrılmasını durdurur. Varsayılan false değeridir.
SkipNonexistentProjects İsteğe bağlı Boolean parametresi.

trueise, diskte var olmayan proje dosyaları atlanır. Aksi takdirde, bu tür projeler bir hataya neden olur. Varsayılan değer false olarak ayarlanır.
SkipNonexistentTargets İsteğe bağlı Boolean parametresi.

trueise, var olan ancak adlandırılmış Targets içermeyen proje dosyaları atlanır. Aksi takdirde, bu tür projeler bir hataya neden olur. Varsayılan değer false olarak ayarlanır. MSBuild 15.5'te kullanıma sunulmuştur.
StopOnFirstFailure İsteğe bağlı Boolean parametresi.

trueprojelerden biri oluşturulamazsa, başka proje derlenemez. Şu anda bu seçenek paralel olarak oluşturulurken (birden çok işlemciyle) desteklenmemektedir.
TargetAndPropertyListSeparators İsteğe bağlı String[] parametresi.

Hedeflerin ve özelliklerin listesini Project öğe meta verileri) olarak belirtir. Ayırıcılar işlemeden önce ayıklanmamıştır. Örneğin, %3B (kaçış ';'), ';' olmayan bir ';' gibi değerlendirilir.
TargetOutputs İsteğe bağlı ITaskItem[] salt okunur çıkış parametresi.

Tüm proje dosyalarından oluşturulan hedeflerin çıkışlarını döndürür. Yalnızca belirtilen hedeflerden çıkışlar döndürülür, bu hedeflerin bağımlı olduğu hedeflerde mevcut olabilecek çıkışlar döndürülür.

TargetOutputs parametresi aşağıdaki meta verileri de içerir:

- MSBuildSourceProjectFile: Çıkışları ayarlayan hedefi içeren MSBuild proje dosyası.
- MSBuildSourceTargetName: Çıkışları ayarlayan hedef. Not: Her proje dosyasından veya hedeften çıkışları ayrı ayrı tanımlamak istiyorsanız, her proje dosyası veya hedefi için MSBuild görevini ayrı olarak çalıştırın. tüm proje dosyalarını oluşturmak için MSBuild görevini yalnızca bir kez çalıştırırsanız, tüm hedeflerin çıkışları tek bir dizide toplanır.
Targets İsteğe bağlı String parametresi.

Proje dosyalarında derleme hedefi veya hedefleri belirtir. Hedef adların listesini ayırmak için noktalı virgül kullanın. MSBuild görevinde hiçbir hedef belirtilmezse, proje dosyalarında belirtilen varsayılan hedefler oluşturulur. Not: Hedeflerin tüm proje dosyalarında gerçekleşmesi gerekir. Aksi takdirde bir derleme hatası oluşur.
ToolsVersion İsteğe bağlı String parametresi.

Bu göreve geçirilen projeleri oluştururken kullanılacak ToolsVersion belirtir.

MSBuild görevinin projede belirtilenden farklı bir .NET Framework sürümünü hedefleyen bir proje oluşturmasını sağlar. Geçerli değerler 2.0, 3.0ve 3.5. Varsayılan değer 3.5.

Açıklamalar

Daha önce listelenen parametrelere ek olarak, bu görev parametreleri Task sınıfından devralan TaskExtension sınıfından devralır. Bu ek parametrelerin ve açıklamalarının listesi için bkz. TaskExtension temel sınıfı.

MSBuild.exebaşlatmak için Exec görev kullanmanın aksine, bu görev alt projeleri oluşturmak için aynı MSBuild işlemini kullanır. Atlanabilecek önceden oluşturulmuş hedeflerin listesi üst ve alt derlemeler arasında paylaşılır. Yeni BIR MSBuild işlemi oluşturulmadığından bu görev de daha hızlıdır.

Bu görev yalnızca proje dosyalarını değil çözüm dosyalarını da işleyebilir. MSBuild 17.12 ve sonraki sürümlerde hem .slnx hem de .sln çözüm dosyası biçimleri kabul edilir.

Uzak altyapı (örneğin, bağlantı noktaları, protokoller, zaman aşımları, yeniden denemeler vb.) dahil olsa bile, MSBuild tarafından projelerin aynı anda derlenebilmesi için gereken tüm yapılandırmalar, yapılandırma dosyası kullanılarak yapılandırılabilir hale getirilmelidir. Mümkün olduğunda, yapılandırma öğelerinin MSBuild görevde görev parametreleri olarak belirtilmesi gerekir.

MSBuild 3.5 sürümünden başlayarak, Çözüm projeleri artık derlediğinden tüm alt projelerden TargetOutputs'ı ortaya çıkarır.

Özellikleri projelere geçirme

MSBuild'in MSBuild 3.5 öncesi sürümlerinde, MSBuild öğesinde listelenen farklı projelere farklı özellik kümeleri geçirmek zor oldu. MSBuild görevinin Özellikler özniteliğinikullandıysanız, MSBuild görev toplu işlem yapmanız ve öğe listesindeki her proje için koşullu olarak farklı özellikler sağlamadığınız sürece, bu ayarı oluşturulan tüm projelere uygulanır.

Ancak MSBuild 3.5, MSBuild görevi kullanılarak oluşturulan farklı projelerin farklı özelliklerini geçirmeniz için esnek bir yol sağlayan özellikler ve AdditionalProperties adlı iki yeni ayrılmış meta veri öğesi sağlar.

Uyarı

Bu yeni meta veri öğeleri yalnızca MSBuild görevProjeler özniteliğinde geçirilen öğeler için geçerlidir.

Çok işlemcili derleme avantajları

Bu yeni meta verileri kullanmanın başlıca avantajlarından biri, projelerinizi çok işlemcili bir sistemde paralel olarak oluşturduğunuzda ortaya çıkar. Meta veriler, herhangi bir toplu işlem veya koşullu MSBuild görevi gerçekleştirmek zorunda kalmadan tüm projeleri tek bir MSBuild görev çağrısında birleştirmenizi sağlar. Ayrıca, yalnızca tek birMSBuild görevi çağırdığınızda, Projeler özniteliğinde listelenen tüm projeler paralel olarak oluşturulur. (Ancak, BuildInParallel=true özniteliği MSBuild görev.) Daha fazla bilgi için bkz. Paralelbirden çok proje oluşturma.

Özellikler meta verileri

Belirtildiğinde, Özellikler meta verileri görevin Özellikler parametresini geçersiz kılarken, AdditionalProperties meta verileri parametrenin tanımlarına eklenir.

Yaygın bir senaryo, MSBuild görevkullanarak yalnızca farklı derleme yapılandırmaları kullanarak birden çok çözüm dosyası derlemenizdir. Hata ayıklama yapılandırmasını kullanarak a1 çözümünü ve Yayın yapılandırmasını kullanarak a2 çözümünü oluşturmak isteyebilirsiniz. MSBuild 2.0'da bu proje dosyası aşağıdaki gibi görünür:

Uyarı

Aşağıdaki örnekte, "..." ek çözüm dosyalarını temsil eder.

a.proj

<Project>
    <Target Name="Build">
        <MSBuild Projects="a1.sln..." Properties="Configuration=Debug"/>
        <MSBuild Projects="a2.sln" Properties="Configuration=Release"/>
    </Target>
</Project>

Ancak Özellikler meta verilerini kullanarak, aşağıdaki örnekte gösterildiği gibi tek birMSBuild görevi kullanmak için bu kodu basitleştirebilirsiniz:

a.proj

<Project>
    <ItemGroup>
        <ProjectToBuild Include="a1.sln...">
            <Properties>Configuration=Debug</Properties>
        </ProjectToBuild>
        <ProjectToBuild Include="a2.sln">
            <Properties>Configuration=Release</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)"/>
    </Target>
</Project>

-veya-

<Project>
    <ItemGroup>
        <ProjectToBuild Include="a1.sln..."/>
        <ProjectToBuild Include="a2.sln">
            <Properties>Configuration=Release</Properties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)"
          Properties="Configuration=Debug"/>
    </Target>
</Project>

AdditionalProperties meta verileri

MSBuild görevkullanarak iki çözüm dosyası derlediğiniz aşağıdaki senaryoyu göz önünde bulundurun: hem Sürüm yapılandırmasını hem de x86 mimarisini ve diğerini ia64 mimarisini kullanarak. MSBuild 2.0'da, MSBuild görevinin birden çok örneğini oluşturmanız gerekir: biri x86 Mimarisi ile Yayın yapılandırmasını kullanarak projeyi, diğeri ia64 mimarisiyle Yayın yapılandırmasını kullanarak projeyi derlemek için. Proje dosyanız aşağıdaki gibi görünür:

a.proj

<Project>
    <Target Name="Build">
        <MSBuild Projects="a1.sln..." Properties="Configuration=Release;
          Architecture=x86"/>
        <MSBuild Projects="a2.sln" Properties="Configuration=Release;
          Architecture=ia64"/>
    </Target>
</Project>

AdditionalProperties meta verilerini kullanarak, aşağıdakileri kullanarak tek bir MSBuild görev kullanmak için bunu basitleştirebilirsiniz:

a.proj

<Project>
    <ItemGroup>
        <ProjectToBuild Include="a1.sln...">
            <AdditionalProperties>Architecture=x86
              </AdditionalProperties>
        </ProjectToBuild>
        <ProjectToBuild Include="a2.sln">
            <AdditionalProperties>Architecture=ia64
              </AdditionalProperties>
        </ProjectToBuild>
    </ItemGroup>
    <Target Name="Build">
        <MSBuild Projects="@(ProjectToBuild)"
          Properties="Configuration=Release"/>
    </Target>
</Project>

Örnek

Aşağıdaki örnek, ProjectReferences öğe koleksiyonu tarafından belirtilen projeleri oluşturmak için MSBuild görevini kullanır. Sonuçta elde edilen hedef çıkışlar AssembliesBuiltByChildProjects öğe koleksiyonunda depolanır.

<Project>

    <ItemGroup>
        <ProjectReferences Include="*.*proj" />
    </ItemGroup>

    <Target Name="BuildOtherProjects">
        <MSBuild
            Projects="@(ProjectReferences)"
            Targets="Build">
            <Output
                TaskParameter="TargetOutputs"
                ItemName="AssembliesBuiltByChildProjects" />
        </MSBuild>
    </Target>

</Project>

Ayrıca bkz.