MSBuild görevi

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

Parametreler

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

Parametre Tanım
BuildInParallel İsteğe bağlı Boolean parametre.

ise true, parametresinde Projects 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 parametre.

Alt projeye genel özellikler olarak uygulanacak özellik adı/değer çiftlerinin noktalı virgülle ayrılmış listesi. Bu parametreyi belirttiğinizde, MSBuild.exe ile derleme yaparken -property anahtarına sahip olan özelliklerin ayarlanmasıyla işlevsel olarak eşdeğerdir. Örneğin:

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

Parametresi aracılığıyla Properties 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 dosyasının 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 parametre.

ise true, 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 parametre.

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

ise true, MSBuild görevi, MSBuild'e geçirilen listedeki her hedefi aynı anda değil birer birer çağırır. Bu parametrenin true 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 parametre.

ise true, diskte bulunmayan proje dosyaları atlanır. Aksi takdirde, bu tür projeler bir hataya neden olur. varsayılan değeridir false.
SkipNonexistentTargets İsteğe bağlı Boolean parametre.

ise true, var olan ancak adlandırılmış öğeyi Targets içermeyen proje dosyaları atlanır. Aksi takdirde, bu tür projeler bir hataya neden olur. varsayılan değeridir false. MSBuild 15.5'te kullanıma sunulmuştur.
StopOnFirstFailure İsteğe bağlı Boolean parametre.

Projelerden truebiri oluşturulamazsa, başka proje derlenemez. Şu anda paralel olarak oluşturulurken (birden çok işlemci ile) bu desteklenmemektedir.
TargetAndPropertyListSeparators İsteğe bağlı String[] parametre.

Hedef ve özelliklerin listesini öğe meta verileri olarak Project belirtir). İşlemeden önce ayırıcıların kaçışı kaldırılacaktır. Örneğin, %3B (kaçış ';'), kaçışsız 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, görevi her proje dosyası veya hedefi için ayrı olarak çalıştırın MSBuild . Görevi tüm proje dosyalarını derlemek için yalnızca bir kez çalıştırırsanız MSBuild , tüm hedeflerin çıkışları tek bir dizide toplanır.
Targets İsteğe bağlı String parametre.

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

ToolsVersion Bu göreve geçirilen projeleri oluştururken kullanılacak öğesini 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 ve değerleridir 2.03.03.5. Varsayılan değer 3.5 olarak belirlenmiştir.

Açıklamalar

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

MSBuild.exe dosyasını başlatmak için Exec görevinin kullanılmasından farklı olarak, 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.

Yapılandırma uzak altyapı (örneğin, bağlantı noktaları, protokoller, zaman aşımları, yeniden denemeler vb.) içerse 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 görevde görev parametreleri MSBuild 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 Properties özniteliğini kullandıysanız, MSBuild görevini toplu işlemediğiniz ve öğe listesindeki her proje için koşullu olarak farklı özellikler sağlamadığınız sürece, bu görevin ayarı oluşturulan tüm projelere uygulanır.

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

Dekont

Bu yeni meta veri öğeleri yalnızca MSBuild görevinin Projeler ö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. Yalnızca tek bir MSBuild görevini çağırdığınızda, Projeler özniteliğinde listelenen tüm projeler paralel olarak derlenir. (Ancak, özniteliği MSBuild görevinde varsa BuildInParallel=true.) Daha fazla bilgi için bkz. Paralel olarak birden ç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örevini kullanarak, yalnızca farklı derleme yapılandırmalarını 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:

Dekont

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

a.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Build">
        <MSBuild Projects="a1.sln..." Properties="Configuration=Debug"/>
        <MSBuild Projects="a2.sln" Properties="Configuration=Release"/>
    </Target>
</Project>

Bununla birlikte, Özellikler meta verilerini kullanarak, aşağıda gösterildiği gibi tek bir MSBuild görevi kullanmak için bunu basitleştirebilirsiniz:

a.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <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 xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <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örevini kullanarak 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 biri x86 mimarisini, diğeri 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 xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <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örevi kullanmak için bunu basitleştirebilirsiniz:

a.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <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, öğe koleksiyonu tarafından ProjectReferences belirtilen projeleri oluşturmak için görevini kullanırMSBuild. Sonuçta elde edilen hedef çıkışlar öğe koleksiyonunda AssembliesBuiltByChildProjects depolanır.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

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

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

</Project>

Ayrıca bkz.