Menggunakan SDK proyek MSBuild
MSBuild 15.0 memperkenalkan konsep "project SDK", yang menyederhanakan penggunaan kit pengembangan perangkat lunak yang memerlukan properti dan target untuk diimpor.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
</Project>
Selama evaluasi proyek, MSBuild menambahkan impor implisit di bagian atas dan bawah file proyek:
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Mereferensikan SDK proyek
Ada tiga cara untuk mereferensikan SDK proyek:
Sdk
Gunakan atribut pada <Project/>
elemen
<Project Sdk="My.Custom.Sdk">
...
</Project>
Impor implisit ditambahkan ke bagian atas dan bawah proyek seperti yang dibahas sebelumnya.
Untuk menentukan versi SDK tertentu, tambahkan ke atribut Sdk
:
<Project Sdk="My.Custom.Sdk/1.2.3">
...
</Project>
Menggunakan elemen tingkat <Sdk/>
atas
<Project>
<Sdk Name="My.Custom.Sdk" Version="1.2.3" />
...
</Project>
Impor implisit ditambahkan ke bagian atas dan bawah proyek seperti yang dibahas sebelumnya.
Atribut Version
tidak diperlukan.
Menggunakan elemen di <Import/>
mana saja dalam proyek Anda
<Project>
<PropertyGroup>
<MyProperty>Value</MyProperty>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
...
<Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>
Secara eksplisit menyertakan impor dalam proyek Anda memungkinkan Anda mengontrol penuh atas pesanan.
Saat menggunakan elemen <Import/>
, Anda juga dapat menentukan atribut opsional Version
. Misalnya, Anda dapat menentukan <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />
.
Peringatan
Jika Anda mengubah proyek untuk menggunakan <Import/>
elemen, pastikan Anda menambahkan dan .targets
.props
mengimpor dan menghapus SDK dari <Project/>
elemen dan <Sdk/>
elemen. Kegagalan untuk melakukannya akan mengakibatkan impor dua kali lipat dan MSB4011
peringatan.
Bagaimana SDK proyek diselesaikan
Saat mengevaluasi impor, MSBuild secara dinamis menyelesaikan jalur ke SDK proyek berdasarkan nama dan versi yang Anda tentukan. MSBuild juga memiliki daftar pemecah masalah SDK terdaftar, yang merupakan plug-in yang menemukan SDK proyek di komputer Anda. Plug-in ini meliputi:
Resolver berbasis NuGet yang meminta umpan paket yang dikonfigurasi untuk paket NuGet yang cocok dengan ID dan versi SDK yang Anda tentukan.
Resolver ini hanya aktif jika Anda menentukan versi opsional. Ini dapat digunakan untuk SDK proyek kustom apa pun.
Pemecah masalah .NET SDK yang menyelesaikan SDK MSBuild yang diinstal dengan .NET SDK.
Resolver ini menemukan SDK proyek seperti
Microsoft.NET.Sdk
danMicrosoft.NET.Sdk.Web
yang merupakan bagian dari produk.Resolver default yang menyelesaikan SDK yang diinstal dengan MSBuild.
Resolver SDK berbasis NuGet mendukung penentuan versi dalam file global.json, yang memungkinkan Anda mengontrol versi SDK proyek di satu tempat dan bukan di setiap proyek individual:
{
"msbuild-sdks": {
"My.Custom.Sdk": "5.0.0",
"My.Other.Sdk": "1.0.0-beta"
}
}
Hanya satu versi setiap SDK proyek yang dapat digunakan selama build. Jika Anda mereferensikan dua versi berbeda dari SDK proyek yang sama, MSBuild mengeluarkan peringatan. Disarankan untuk tidak menentukan versi dalam proyek Anda jika versi ditentukan dalam file global.json.
Konten terkait
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