Yapınızı özelleştirin

Bu makalede, derleme özelleştirme seçeneklerine genel bir bakış ve her yaklaşımın ne zaman kullanılacağına ilişkin yönergeler sağlanmaktadır. Seçenekler, komut satırı bağımsız değişkenlerinden sistem genelindeki özelleştirmelere kadar karmaşıklık sırasına göre sunulur.

Önkoşullar

  • MSBuild proje dosya yapısı (.csproj, .vbprojveya benzeri) hakkında bilgi
  • MSBuild özellikleri ve hedefleri hakkında temel bilgiler

Genel Bakış

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 Description
MSBuild komut satırına bağımsız değişkenler ekleme Ana proje derlemesini ve tüm bağımlı projelerin derlemelerini etkileyen genel özellikleri ayarlayın.
Derlemeyi tek bir proje için özelleştirme .props veya .targets dosyalarına özellikler ekleyerek derleme ayarlarını özelleştirin.
Derleme işleminde oluşturulan dosyaları işleme Oluşturulan dosyalarınızın derlemeye düzgün bir ş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ştirin Paylaşılan kaynak dosyalarını etkilemeden yalnızca yerel makinenizde derlemede değişiklik yapın.
Çözüm derlemesini özelleştirme Derleme davranışını tek tek proje derlemelerinden önce ve sonra çözüm düzeyinde özelleştirin.
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ı.

.props veya .targets dosyasına özellik eklemeyi seçin

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.

Net belirlenmiş içe aktarmalar kullanırken, herhangi bir noktada bir .props veya .targets dosyasından içeri aktarabilirsiniz. Yaygın olarak kullanılan kural şu şekildedir:

  • .props dosyaları aktarma sırasının erken aşamalarında içeri aktarılır.

  • .targets dosyaları yapı sırasına göre sonradan içeri aktarılır.

Bu kural, <Project Sdk="SdkName"> içeri aktarmalar tarafından uygulanır (yani, ilk önce dosyanın tüm içeriğinden önce Sdk.props içeri aktarılır ve ardından dosyanın tüm içeriğinden sonra en son Sdk.targets içeri aktarılır).

Özellikleri nereye koyacağınıza 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 üzerine yazılmaz ve yalnızca yürütme sırasında okunur.

  • Tek bir projede özelleştirilebilen davranışlar için, dosyalarda .props varsayılanları ayarlayın.

  • MSBuild, kullanıcının projesini okuyana 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ış). Herhangi bir öğeden önce tüm özellikler dikkate alınır, bu yüzden kullanıcı-proje özellik özelleştirmeleri fark edilir. .props dosyalarında içe aktarılan öğelere sahip olmak, kullanıcının projesine içe aktarma ile getirilen herhangi bir öğeyi Remove veya Update etme fırsatı verir.

  • Dosyalarda .targets hedefleri tanımlayın. Ancak, .targets dosyası bir SDK tarafından içeri aktarılırsa, kullanıcının projesinde bu hedefi varsayılan olarak geçersiz kılmak için bir yer olmadığı için 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.