MSBuild görevleri

Derleme platformu, derleme işlemi sırasında herhangi bir sayıda eylem yürütebilme özelliğine ihtiyaç duyar. MSBuild bu eylemleri gerçekleştirmek için görevleri kullanır. Görev, MSBuild tarafından atomik derleme işlemleri gerçekleştirmek için kullanılan yürütülebilir kod birimidir.

Görev mantığı

MSBuild XML proje dosyası biçimi, derleme işlemlerini kendi başına tam olarak yürütemez, bu nedenle görev mantığının proje dosyasının dışında uygulanması gerekir.

Bir görevin yürütme mantığı, ad alanında Microsoft.Build.Framework tanımlanan arabirimi uygulayan ITask bir .NET sınıfı olarak uygulanır.

Görev sınıfı, proje dosyasındaki görev için kullanılabilen giriş ve çıkış parametrelerini de tanımlar. Görev sınıfı tarafından kullanıma sunulan tüm genel ayarlanabilir statik olmayan soyut olmayan özellikler, Task öğesine aynı ada sahip bir öznitelik yerleştirilerek ve değerini bu makalenin devamında verilen örneklerde gösterildiği gibi ayarlayarak proje dosyasında değerler verilebilir.

Arabirimi uygulayan ITask bir yönetilen sınıf yazarak kendi görevinizi yazabilirsiniz. Daha fazla bilgi için bkz . Görev yazma.

Proje dosyasından görev yürütme

Proje dosyanızda bir görevi yürütmeden önce, görevi uygulayan derlemedeki türü UsingTask öğesiyle görev adına eşlemeniz gerekir. Bu, MSBuild'in görevinizi proje dosyanızda bulduğunda yürütme mantığını nerede arayacağı hakkında bilgi edinmesine olanak tanır.

BIR MSBuild proje dosyasında bir görevi yürütmek için, bir öğenin alt öğesi olarak görevin adına sahip bir Target öğe oluşturun. Bir görev parametreleri kabul ederse, bunlar öğesinin öznitelikleri olarak geçirilir.

MSBuild öğe listeleri ve özellikleri parametre olarak kullanılabilir. Örneğin, aşağıdaki kod görevi çağırır MakeDir ve nesnesinin özelliğinin DirectoriesMakeDir değerini özelliğin BuildDir değerine eşit olarak ayarlar:

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Görevler, daha sonra kullanmak üzere öğelerde veya özelliklerde depolanabilen bilgileri proje dosyasına da döndürebilir. Örneğin, aşağıdaki kod görevi çağırır Copy ve çıkış özelliğindeki CopiedFilesSuccessfullyCopiedFiles bilgileri öğe listesinde depolar.

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Dahil edilen görevler

MSBuild; dosyaları kopyalayan Kopyala, dizinler oluşturan MakeDir ve C# kaynak kodu dosyalarını derleyen Csc gibi birçok görevle birlikte gönderilir. Kullanılabilir görevlerin ve kullanım bilgilerinin tam listesi için bkz . Görev başvurusu.

Görevleri geçersiz kıl

MSBuild çeşitli konumlardaki görevleri arar. İlk konum, UZANTıNıN .OverrideTasks MSBuild dizininde depolandığı dosyalardadır. Bu dosyalardaki görevler, proje dosyasındaki görevler de dahil olmak üzere aynı adlara sahip diğer görevleri geçersiz kılar. İkinci konum proje dosyasında ve içeri aktarmalarındadır. Görev projede tanımlanmamışsa, MSBuild dizinindeki bir .tasks dosyada tanımlanan MSBuild'in varsayılan görevlerinde aranacaktır.