Yerel derlemenizi özelleştirme

GitHub, kaynak denetimi veya herhangi bir paylaşılan kod tabanı gibi bir kod deposu kullanan bir ekipte çalışırken, yerel makinenizdeki derlemelerinizi özelleştirmek istediğinizde ( belki geçici olarak bir hatayı yeniden oluşturmak veya farklı bir yapılandırmayı test etmek için), bu özelleştirmeleri paylaşılan kod deposuyla paylaşılan proje dosyalarından ayrı tutmak kullanışlı olabilir. Bu makalede, MSBuild'de kullanıma sunulan ve kullanıcıya özgü veya yalnızca yerel özel yapılandırmalar yapmanıza olanak sağlayan bazı derleme uzantıları açıklanmaktadır.

.user dosyası

Bu bağlamda dosya olarak .user da adlandırılan öğesini kullanmak $(MSBuildProjectFullPath).userda bir seçenektir. Bu dosya yerel makinenize özgü uzantıları, seçenekleri veya değişkenleri korumak için tasarlanmıştır. Kaynak denetimine yüklenmesi amaçlanmamıştır ve üzerinde otomatik olarak denetlenecek .gitignore. Daha kapsamlı değişiklikler için projenin kendisini değiştirmeyi tercih eder, böylece gelecekteki bakımcıların bu uzantı mekanizması hakkında bilgi sahibi olması gerekmez.

Desteklenen çok hedefli projelerde .user dosya, iç derlemelerde ve dış derlemelerde otomatik olarak içeri aktarılır, böylece dosyayı çözüm içinde oluşturabilirsiniz. Başka bir derleme türü üzerinde çalışıyorsanız, dosyayı kullanmaya .user devam edebilirsiniz. Çözümünüzün içinde oluşturabilir ve ardından proje dosyanıza aktarabilirsiniz.

<Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>

MSBuildExtensionsPath ve MSBuildUserExtensionsPath

Kurala göre, birçok temel derleme mantıksal dosyası içeri aktar

$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\{TargetFileName}\ImportBefore\*.targets

ve

$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\{TargetFileName}\ImportAfter\*.targets

Sonra. Bu kural, yüklü SDK'ların ortak proje türlerinin derleme mantığını artırmasına olanak tanır.

Aynı dizin yapısında$(MSBuildUserExtensionsPath), kullanıcı başına %LOCALAPPDATA%\Microsoft\MSBuild klasörü olan içinde arama yapılır. Bu klasöre yerleştirilen dosyalar, ilgili proje türünün tüm derlemeleri için bu kullanıcının kimlik bilgileri altında çalıştırılır. desenindeki ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}içeri aktarma dosyasından sonra adlı özellikleri ayarlayarak kullanıcı uzantılarını devre dışı bırakabilirsiniz. Örneğin, ayarının ayarlanması ImportUserLocationsByWildcardBeforeMicrosoftCommonPropsfalse içeri aktarmayı $(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*engeller.

Proje diline göre özel yapılandırma

.NET diline (C#, Visual Basic veya F#) bağlı olarak farklı davranışlara ihtiyacınız varsa, dile özgü özellikleri ve değerlerini tanımlamak için içindeki $(MSBuildProjectExtension) proje dosyası uzantısına bağlı koşulları içeren özellik grupları ekleyebilirsiniz.

<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.vbproj'">
   <!-- Put VB-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.fsproj'">
   <!-- Put F#-only property definitions here -->
</PropertyGroup>
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
   <!-- Put C#-only property definitions here -->
</PropertyGroup>