Bagikan melalui


Mengkustomisasi build lokal Anda

Saat Anda bekerja dalam tim yang menggunakan repositori kode seperti GitHub, kontrol sumber, atau basis kode bersama apa pun, tetapi Anda ingin menyesuaikan build Anda pada komputer lokal Anda, mungkin untuk sementara waktu untuk mereproduksi bug atau menguji konfigurasi yang berbeda, lebih mudah untuk menjaga kustomisasi tersebut terpisah dari file proyek bersama yang dibagikan dengan repositori kode bersama. Artikel ini menjelaskan beberapa ekstensi build yang tersedia di MSBuild yang memungkinkan Anda membuat konfigurasi kustom khusus pengguna atau khusus lokal.

File .user

Menggunakan $(MSBuildProjectFullPath).user, juga disebut sebagai .user file dalam konteks ini, juga merupakan opsi. File ini dimaksudkan untuk menyimpan ekstensi, opsi, atau variabel yang khusus untuk komputer lokal Anda. Ini tidak dimaksudkan untuk diunggah ke kontrol sumber, dan secara otomatis diperiksa pada .gitignore. Untuk perubahan yang lebih luas lebih suka mengubah proyek itu sendiri, sehingga pemeliharaan di masa depan tidak perlu tahu tentang mekanisme ekstensi ini.

Pada proyek multitarget yang .user didukung, file secara otomatis diimpor dalam build dalam dan build luar, sehingga Anda hanya dapat membuat file dalam solusi. Jika Anda mengerjakan jenis build lain, Anda masih dapat menggunakan file tersebut .user . Anda dapat membuatnya dalam solusi Anda lalu mengimpornya di file proyek Anda.

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

MSBuildExtensionsPath dan MSBuildUserExtensionsPath

Menurut konvensi, banyak file logika build inti mengimpor

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

sebelum isinya, dan

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

sesudahnya. Konvensi ini memungkinkan SDK yang diinstal untuk menambah logika build jenis proyek umum.

Struktur direktori yang sama dicari di $(MSBuildUserExtensionsPath), yang merupakan folder per pengguna %LOCALAPPDATA%\Microsoft\MSBuild. File yang ditempatkan di folder tersebut akan diimpor untuk semua build dari jenis proyek yang sesuai yang dijalankan di bawah kredensial pengguna tersebut. Anda dapat menonaktifkan ekstensi pengguna dengan mengatur properti yang dinamai sesuai dengan file impor dalam pola ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}. Misalnya, mengatur ImportUserLocationsByWildcardBeforeMicrosoftCommonProps ke false akan mencegah pengimporan $(MSBuildUserExtensionsPath)\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\*.

Konfigurasi kustom berdasarkan bahasa proyek

Jika Anda memerlukan perilaku yang berbeda tergantung pada bahasa .NET (C#, Visual Basic, atau F#), Anda dapat menambahkan grup properti dengan ketentuan yang bergantung pada ekstensi file proyek di $(MSBuildProjectExtension) untuk menentukan properti khusus bahasa dan nilainya.

<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>