Menyesuaikan build solusi
Ketika MSBuild membangun file solusi, MSBuild terlebih dahulu menerjemahkannya secara internal ke dalam file proyek dan kemudian membangunnya. File proyek yang dihasilkan mengimpor before.{solutionname}.sln.targets
sebelum menentukan target apa pun dan after.{solutionname}.sln.targets
setelah mengimpor target, termasuk target yang diinstal ke direktori $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore
dan $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter
.
Misalnya, Anda dapat menentukan target baru untuk menulis pesan log kustom setelah membangun MyCustomizedSolution.sln dengan membuat file di direktori yang sama bernama after.MyCustomizedSolution.sln.targets yang berisi
<Project>
<Target Name="EmitCustomMessage" AfterTargets="Build">
<Message Importance="High" Text="The solution has completed the Build target" />
</Target>
</Project>
Build solusi terpisah dari build proyek, sehingga pengaturan di sini tidak memengaruhi build proyek.
Penting
Menyesuaikan build solusi dengan cara ini hanya berlaku untuk build baris perintah dengan MSBuild.exe. Ini tidak berlaku untuk build di dalam Visual Studio. Untuk alasan ini, tidak disarankan untuk menempatkan penyesuaian pada tingkat solusi. Alternatif yang lebih baik untuk menyesuaikan semua proyek dalam solusi adalah menggunakan file Directory.Build.props dan Directory.build.targets di folder solusi, seperti yang dibahas di bagian lain dalam artikel ini.
Jika Anda memiliki banyak file solusi yang ingin diluaskan dengan cara yang sama, tetapi tidak ingin menulis ke folder $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\
(yang biasanya memerlukan izin yang lebih tinggi), Anda dapat membuat file Directory.Solution.props dan Directory.Solution.targets lalu letakkan di jalur akar di atas file solusi yang ingin Anda luaskan. Directory.Solution.props diimpor di awal pembuatan solusi, dan Directory.Solution.targets diimpor di akhir pembuatan solusi. Saat Anda membuat file solusi, Directory.Build.props dan Directory.Build.targets tidak diimpor, jadi Anda harus menggunakan Directory.Solution.props dan Directory.Solution.targets sebagai gantinya. File tidak mengimpor satu sama lain secara implisit.
Jika Anda memiliki Directory.Solution.props atau Directory.Solution.targets di folder akar, tetapi Anda memiliki solusi di bawah folder yang tidak ingin Anda impor, Anda dapat menggunakan file khusus solusi yang disebutkan sebelumnya before.{solutionname}.sln.targets
dan after.{solutionname}.sln.targets
untuk mengatur properti $(ImportDirectorySolutionProps)
dan $(ImportDirectorySolutionTargets)
ke false. Atau, Anda dapat menggunakan properti $(DirectorySolutionPropsPath)
dan $(DirectorySolutionTargetsPath)
untuk menentukan lokasi berbeda untuk file tersebut. Ini dapat membantu jika Anda memiliki berbagai subset dari solusi Anda yang memerlukan nilai properti tertentu atau target yang sama dengan subset tersebut.
Konten terkait
- Sesuaikan build Anda.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk