.NET SDK menggunakan grafik RID yang lebih kecil

Proyek yang menargetkan versi .NET 8 atau yang lebih baru sekarang menggunakan grafik pengidentifikasi runtime (RID) yang lebih kecil dan "portabel".

Perilaku sebelumnya

.NET SDK menggunakan grafik RID yang kompleks untuk menentukan aset saat membangun atau menerbitkan proyek.

Perilaku yang baru

Mulai dari .NET 8, .NET SDK menggunakan grafik yang lebih kecil yang hanya terdiri dari RID portabel, untuk proyek yang menargetkan .NET 8 atau versi yang lebih baru. Ini berarti bahwa SDK tidak akan mengenali RID khusus versi atau khusus distro secara default. Anda mungkin melihat kesalahan berikut (atau serupa) saat membuat proyek:

error NETSDK1083: RuntimeIdentifier yang ditentukan 'win10-x64' tidak dikenali. Lihat https://aka.ms/netsdk1083 untuk informasi lebih lanjut.

Versi yang diperkenalkan

.NET 8 RC 1

Jenis perubahan yang melanggar

Perubahan ini adalah perubahan perilaku dan juga dapat memengaruhi kompatibilitas sumber.

Alasan untuk berubah

Grafik RID sangat mahal untuk dipertahankan dan dipahami, mengharuskan .NET itu sendiri untuk sadar distro dengan cara yang rapuh. Tim .NET dan komunitas menghabiskan waktu yang tidak sepele untuk memperbarui grafik dan mendukung pembaruan tersebut ke rilis sebelumnya. Tujuan jangka panjang adalah untuk berhenti memperbarui grafik RID, berhenti membacanya, dan akhirnya menghapusnya. Perubahan yang melanggar ini adalah langkah menuju tujuan tersebut.

Gunakan RID portabel, misalnya, , linux-<arch>, linux-musl-<arch>osx-<arch>, dan win-<arch>, alih-alih RID khusus versi atau khusus distro, seperti ubuntu.16.04-<arch>, osx.10.11-<arch>, dan win10-<arch>.

Jika Anda menentukan RID dengan menggunakan properti RuntimeIdentifier MSBuild dalam file proyek Anda (*.csproj, *.vbproj, atau *.fsproj), ubah dengan sesuai. Misalnya, ubah <RuntimeIdentifier>win10-x64</RuntimeIdentifier> ke <RuntimeIdentifier>win-x64</RuntimeIdentifier> dalam file proyek Anda:

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

Jika Anda menentukan RID sebagai argumen baris perintah, buat perubahan serupa. Misalnya, alih-alih dotnet publish --framework net8.0 --runtime win10-x64, gunakan perintah dotnet publish --framework net8.0 --runtime win-x64.

Jika Anda perlu kembali ke perilaku sebelumnya menggunakan grafik RID lama dan lengkap, Anda dapat mengatur UseRidGraph properti MSBuild ke true dalam file proyek Anda. Namun, grafik RID lama tidak akan diperbarui di masa depan untuk mencoba menangani distro atau arsitektur lainnya.

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

Lihat juga