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 Directories
MakeDir
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 CopiedFiles
SuccessfullyCopiedFiles
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.