MSBuild görevleri
Derleme platformunun, derleme işlemi sırasında herhangi bir sayıda eylemi yürütme yeteneği olması gerekir. MSBuild, bu eylemleri gerçekleştirmek için görevleri kullanır. görev, atomik derleme işlemleri gerçekleştirmek için MSBuild tarafından kullanılan çalıştırılabilir kod birimidir.
Görev mantığı
MSBuild XML proje dosyası biçimi kendi kendine derleme işlemlerini tamamen yürütemiyor, bu nedenle görev mantığının proje dosyası dışında uygulanması gerekir.
Bir görevin yürütme mantığı, ITask ad alanında tanımlanan arabirimi uygulayan bir .NET sınıfı olarak uygulanır Microsoft.Build.Framework .
Görev sınıfı ayrıca proje dosyasındaki görevin kullanabildiği giriş ve çıkış parametrelerini de tanımlar. Görev sınıfı tarafından kullanıma sunulan tüm ortak ayarlanabilir statik olmayan özellik, görev öğesinde aynı ada sahip karşılık gelen bir özniteliği yerleştirerek proje dosyasındaki değerler verilebilir ve bu makalede daha sonra örneklerde gösterildiği gibi değeri ayarlayabilirsiniz.
Arabirimini uygulayan yönetilen bir sınıf yazarak kendi görevinizi yazabilirsiniz ITask . Daha fazla bilgi için bkz. görev yazma.
Proje dosyasından bir görev yürütme
Proje dosyanızda bir görevi yürütmeden önce, ilk olarak görevi bir görev adına uygulayan derleme içindeki türü UsingTask öğesiyle eşlemeniz gerekir. bu, proje dosyanızda bulduğunda görevin yürütme mantığını nerede arayacağı MSBuild bilmesini sağlar.
bir MSBuild proje dosyasında bir görevi yürütmek için, bir öğenin alt öğesi olarak görevin adında bir öğe oluşturun Target . Bir görev parametreleri kabul ediyorsa, bunlar öğesinin öznitelikleri olarak geçirilir.
MSBuild öğe listeleri ve özellikler parametre olarak kullanılabilir. Örneğin, aşağıdaki kod MakeDir görevi çağırır ve Directories nesnenin özelliğinin değerini MakeDir özelliğin değerine eşit olarak ayarlar BuildDir :
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
Görevler Ayrıca, daha sonra kullanılmak üzere öğeler veya özelliklerde depolanabilecek proje dosyasına bilgi döndürebilir. Örneğin, aşağıdaki kod Copy görevi çağırır ve bilgileri CopiedFiles öğe listesindeki çıkış özelliğinden depolar SuccessfullyCopiedFiles .
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
Dahil edilen görevler
MSBuild, Copy, dosyaları kopyalayan, dizin oluşturan makedirve C# kaynak kodu dosyalarını derlenen Cscgibi birçok görevle birlikte gönderilir. Kullanılabilir görevlerin ve kullanım bilgilerinin tüm listesi için bkz. görev başvurusu.
Geçersiz kılınan görevler
MSBuild birkaç konumdaki görevleri arar. İlk konum uzantılı dosyalardır ..NET Framework dizinlerinde depolanan overridetasks. Bu dosyalardaki görevler, proje dosyasındaki görevler de dahil olmak üzere, aynı ada sahip diğer tüm görevleri geçersiz kılar. İkinci konum uzantılı dosyalardır ..NET Framework dizinlerindeki görevler. Görev bu konumlardan birinde bulunmazsa, proje dosyasındaki görev kullanılır.