Bagikan melalui


Menyesuaikan pengaturan pembuatan solusi

Ketika MSBuild membangun file solusi, MSBuild terlebih dahulu menerjemahkan file secara internal ke dalam file proyek, lalu membangun file proyek tersebut. File proyek yang dihasilkan dapat mengimpor sebelumnya.<file solutionname>.sln.targets sebelum menentukan target apa pun, dan impor setelahnya.<solutionname>.sln.targets setelah mengimpor target.

File target sebelum dan sesudah diinstal pada direktori $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportBefore dan $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile\ImportAfter.

Jadi, misalnya, Anda dapat menentukan target baru untuk menulis pesan log kustom setelah MyCustomizedSolution.sln build, dengan membuat file berikut bernama setelahnya. MyCustomizedSolution.sln.targets dalam direktori yang sama.

<Project>
 <Target Name="EmitCustomMessage" AfterTargets="Build">
   <Message Importance="High" Text="The solution has completed the Build target" />
 </Target>
</Project>

Pembangunan solusi terpisah dari pembangunan proyek, sehingga pengaturan ini tidak memengaruhi pembangunan proyek.

Penting

Menyesuaikan build solusi dengan cara ini hanya berlaku untuk build baris perintah menggunakan MSBuild.exe atau dotnet build, dan tidak berlaku untuk build di dalam Visual Studio. Oleh karena itu, sebaiknya jangan 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.

Menulis ke $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\SolutionFile folder biasanya memerlukan izin yang ditingkatkan. Jika Anda memiliki banyak file solusi untuk memperluas dengan cara yang sama, tetapi Anda tidak ingin menulis ke folder SolutionFile , Anda dapat membuat file Directory.Solution.props dan Directory.Solution.targets dan menempatkannya di jalur akar di atas file solusi yang ingin Anda perluas. Directory.Solution.props diimpor di awal build solusi, dan Directory.Solution.targets diimpor di akhir build 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. Dua jenis file tidak secara implisit saling mengimpor.

Ketika Anda memiliki file Directory.Solution.props atau Directory.Solution.targets di folder akar, tetapi Anda tidak ingin solusi di bawah folder tersebut mengimpor file tersebut, Anda dapat menggunakan solusi sebelumnya.<file solutionname>.sln.targets untuk mengatur properti ImportDirectorySolutionProps dan ImportDirectorySolutionTargets ke false.

Atau, Anda dapat menggunakan $(DirectorySolutionPropsPath) properti dan $(DirectorySolutionTargetsPath) untuk menentukan lokasi yang berbeda untuk file tersebut. Pendekatan ini dapat membantu jika subset solusi Anda memerlukan nilai properti atau target tertentu yang sama.

Nota

Pembangunan solusi didukung dengan format file solusi .slnx pada MSBuild versi 17.12 dan yang lebih baru. Kedua sebelum.<solutionname.slnx.targets> dan sebelum.<solutionname>.sln.targets, dan file setelah yang sesuai, berfungsi dengan MSBuild 17.14 dan yang lebih baru.

Untuk informasi selengkapnya tentang opsi kustomisasi build, lihat Menyesuaikan build Anda.