Beberapa paket Microsoft.Extensions disertakan dalam kerangka kerja bersama

Untuk mengurangi ukuran aplikasi, sederhanakan dependensi paket, dan permudah layanan, .NET 11 menyertakan sembilan pustaka Microsoft.Extensions.* dalam kerangka kerja bersama dasar. Proyek yang secara eksplisit mereferensikan paket ini menerima peringatan build NU1510. Anda dapat menyelesaikan peringatan dengan menghapus PackageReference. Jika Anda menggunakan versi lama dari paket-paket ini, memutakhirkan ke .NET 11 dapat memunculkan perubahan yang tidak kompatibel yang diperkenalkan sejak versi lama tersebut hingga .NET 11.

Versi yang diperkenalkan

.NET 11 Pratinjau 4

Perilaku sebelumnya

Sebelumnya, pustaka Microsoft.Extensions.* berikut ini bukan bagian dari kerangka kerja bersama .NET. (Anda mendapatkan kerangka kerja bersama dengan menggunakan Sdk="Microsoft.NET.Sdk", atau juga merujuk salah satu SDK .NET lainnya.) Proyek yang membutuhkannya memerlukan entri PackageReference eksplisit, dan proses build menyalin rakitan ke folder output:

Perilaku baru

Mulai dari .NET 11, sembilan pustaka ini adalah bagian dari kerangka kerja bersama dasar .NET:

  • Anda tidak memerlukan PackageReference untuk pustaka ini saat Anda menargetkan net11.0 atau nanti.
  • Jika Anda mereferensikan paket ini secara eksplisit, Anda menerima peringatan build NU1510.
  • Rakitan ini tidak lagi disalin ke folder output.
  • Dalam kasus yang jarang terjadi, API tambahan dalam set pemuatan default dapat menimbulkan konflik nama atau tipe. Untuk mengatasi konflik, tambahkan arahan yang lebih eksplisit using , gunakan alias, atau gunakan nama jenis yang sepenuhnya memenuhi syarat.

Jenis perubahan yang memutus kompatibilitas

Perubahan ini adalah perubahan perilaku.

Alasan perubahan

Termasuk pustaka yang umum digunakan ini dalam kerangka kerja bersama mengurangi ukuran aplikasi, menyederhanakan dependensi paket, dan menyederhanakan layanan.

Hapus PackageReference untuk semua paket yang terdampak:

Untuk proyek yang hanya menargetkan net11.0 atau yang lebih baru, hapus PackageReference sepenuhnya:

<!-- Remove entries like these from your .csproj when targeting net11.0 only: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." />
<PackageReference Include="Microsoft.Extensions.Options" Version="..." />

Kode Anda terus berfungsi tanpa modifikasi—API sekarang menjadi bagian dari runtime.

Untuk proyek multi-target (misalnya, <TargetFrameworks>net10.0;net11.0</TargetFrameworks>), NU1510 tidak dinaikkan karena paket masih diperlukan untuk TFM yang lebih lama. Tidak ada tindakan yang diperlukan—NuGet memilih rakitan yang sesuai untuk setiap kerangka kerja target secara otomatis. Jika Anda ingin eksplisit, Anda dapat secara kondisional menyertakan referensi:

<!-- Keep the reference only for TFMs that don't include it in the shared framework: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." Condition="'$(TargetFramework)' != 'net11.0'" />

Mengatasi konflik nama saat kompilasi (jarang):

Jika Anda mengalami kesalahan kompilasi karena nama dalam kode Anda bertentangan dengan salah satu API yang baru disertakan, gunakan salah satu pendekatan berikut:

  • Tambahkan arahan yang lebih spesifik using .
  • using Gunakan alias.
  • Gunakan nama tipe yang sepenuhnya memenuhi syarat.

Jika Anda bergantung pada versi lama dari paket ini:

Untuk menghindari kegagalan runtime seperti MissingMethodException atau TypeLoadException, kompilasikan ulang semua pustaka atau biner yang bergantung menggunakan rakitan referensi .NET 11. Jika Anda menargetkan net11.0, hapus PackageReference dan build ulang. Jika Anda menargetkan TFM yang lebih lama atau beberapa target, perbarui referensi paket untuk target non-net11.0 ke versi saat ini, lalu kompilasikan ulang.

Perubahan mencolok berikut dari versi sebelumnya mungkin muncul saat meningkatkan ke versi .NET 11 paket ini:

Microsoft. Extensions.DependencyInjection.Abstractions

Microsoft.Extensions.Logging.Abstractions

Microsoft.Extensions.Hosting.Abstractions

API yang Terpengaruh

Tidak ada.