Derlemenizi özelleştirme
Standart derleme işlemini (Microsoft.Common.props ve Microsoft.Common.targets içeri aktarma) kullanan MSBuild projelerinde, derleme işleminizi özelleştirmek için kullanabileceğiniz çeşitli genişletilebilirlik kancaları vardır.
Özelleştirilebilir derleme işlemlerinin çoğu özellikler tarafından denetleniyor. İstenen etkiyi elde etmek için özellik değerinin nasıl ve nerede ayarlandığını bilmek önemlidir. Komut satırında (ve yanıt dosyalarında), Directory.Build.props gibi özel dosyalarda, içeri aktarılan dosyalarda veya proje dosyasında özellikleri ayarlayabilirsiniz. Bir özelliğin nerede kullanıldığını, ayarlandığını veya değiştirildiğini ve .NET SDK gibi SDK'lardan örtük içeri aktarmalar da dahil olmak üzere içeri aktarılan dosyaların sırasını bilmek önemlidir.
Özelliklerin listesi için bkz . MSBuild ortak özellikleri.
Özelleştirme seçeneklerini keşfetme
Karmaşıklığı ve etki kapsamını artırmak için aşağıdaki özelleştirme seçenekleri listelenmiştir. Bu listenin en üstünden başlayarak amacınıza uygun en az karmaşık özelleştirme seçeneğini kullanmanızı öneririz.
Özelleştirme seçeneği | Açıklama |
---|---|
MSBuild komut satırına bağımsız değişkenler ekleme | Tüm bağımlı projelerin ana proje derlemelerini ve derlemelerini etkileyen genel özellikleri ayarlayın. |
Derlemeyi tek bir proje için özelleştirme | Derleme ayarlarını özelleştirmek .props için veya .targets dosyalarına özellikler ekleyin. |
Derleme işleminde oluşturulan dosyaları işleme | Oluşturulan dosyalarınızın derleme çıkışına düzgün şekilde eklendiğinden emin olun. |
Bir veya daha fazla proje için derlemeyi özelleştirme | Bir klasör altındaki tüm projeler için derlemeyi özelleştirmek için Directory.Build.props'a özellikler ekleyin veya Directory.Build.targets'a özellikler ve hedefler ekleyin. Bu teknik, bir SDK tarafından ayarlanan veya kullanılan özellikleri ayarlamanın yanı sıra, bir klasör veya alt klasördeki tüm projeleri etkilemeleri için kapsam özelleştirmeleri için kullanışlıdır. |
Yerel derlemenizi özelleştirme | Paylaşılan kaynak dosyalarını etkilemeden yalnızca yerel makinenizde derlemede değişiklik yapın. |
Tüm .NET derlemelerini özelleştirme | .NET derlemeleri için sistem genelindeki kapsamla derlemeyi özelleştirin. |
C++ derlemelerini özelleştirme | Bir projeye, çözüme, klasöre veya bir sistemdeki MSBuild yüklemesi tarafından yönetilen tüm derlemelere göre kapsamı belirlenmiş C++ derlemesini özelleştirin. |
Projeniz için komut satırı MSBuild çağrılarına bağımsız değişkenler ekleme
Komut satırında genel özellikleri ayarlayabilirsiniz. Genel özellikler, bağımlılıklar da dahil olmak üzere tüm proje derlemelerini etkiler. Bir proje oluşturmanın tüm proje bağımlılıkları için olası bir derlemeyi otomatik olarak tetiklediğini hatırlayın. MSBuild'in normal davranışı, güncel olmayan bağımlı projeler oluşturmaktır. Bu bağımlı proje derlemeleri, komut satırından özgün projeyle aynı genel özellik ayarlarıyla başlatılır.
Kaynak dizininizdeki veya üzerindeki bir Directory.Build.rsp dosyası, projenizin komut satırı derlemelerine uygulanır. Ayrıntılar için bkz . MSBuild yanıt dosyaları.
Veya .targets
dosyasına özellik ekleme arasında seçim .props
yapma
MSBuild içeri aktarma sırasına bağımlıdır ve bir özelliğin (veya UsingTask
hedefin) son tanımı kullanılan tanımdır.
Açık içeri aktarmaları kullanırken, herhangi bir noktada veya .props
.targets
dosyasından içeri aktarabilirsiniz. Yaygın olarak kullanılan kural şu şekildedir:
.props
dosyaları içeri aktarma sırasının erken aşamalarında içeri aktarılır..targets
dosyaları derleme sırasına göre geç içeri aktarılır.
Bu kural, içeri aktarmalar tarafından <Project Sdk="SdkName">
zorlanır (yani, Sdk.props'un içeri aktarılması önce, dosyanın tüm içeriğinden önce gelir, ardından dosyanın tüm içeriklerinden sonra Sdk.targets en son gelir).
Özellikleri nereye koyacağınız konusunda karar verirken aşağıdaki genel yönergeleri kullanın:
Çoğu özellik için bunların nerede tanımlandığı önemli değildir, çünkü bunların üzerine yazılmaz ve yürütme zamanında salt okunur olur.
Tek bir projede özelleştirilebilen davranışlar için, dosyalarda
.props
varsayılanları ayarlayın.MSBuild kullanıcının projesini okuyana
.props
kadar özelleştirme gerçekleşmediğinden, özelleştirilmiş olabilecek bir özelliğin değerini okuyarak dosyalardaki bağımlı özellikleri ayarlamaktan kaçının.Tek tek projelerden özelleştirmeleri aldıkları için dosyalardaki
.targets
bağımlı özellikleri ayarlayın.Özellikleri geçersiz kılmanız gerekiyorsa, tüm kullanıcı projesi özelleştirmelerinin etkili olma şansı olduktan sonra bunu bir
.targets
dosyada yapın. Türetilmiş özellikleri kullanırken dikkatli olun; türetilmiş özelliklerin de geçersiz kılınmış olması gerekebilir.Dosyalara
.props
öğe ekleme (bir özelliğe göre koşullandırılmış). Tüm özellikler herhangi bir öğeden önce kabul edilir, bu nedenle kullanıcı-proje özellik özelleştirmeleri alınır ve dosyalarda.props
içeri aktarılan öğelere sahip olmak, kullanıcının projesine veyaUpdate
içeri aktarma tarafından getirilen herhangi bir öğeyeRemove
fırsat verir.Dosyalarda
.targets
hedefleri tanımlayın. Ancak, dosya bir SDK tarafından içeri aktarılırsa.targets
, kullanıcının projesinin varsayılan olarak geçersiz kılması için bir yeri olmadığından bu senaryonun hedefi geçersiz kılmayı zorlaştırdığını unutmayın.Mümkünse, bir hedef içindeki özellikleri değiştirmek yerine değerlendirme zamanında özellikleri özelleştirmeyi tercih edin. Bu kılavuz, bir projenin yüklenmesini ve ne yaptığının anlaşılmasını kolaylaştırır.