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 veya Update içeri aktarma tarafından getirilen herhangi bir öğeye Remove 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.