Bagikan melalui


Atribut OSPlatform diganti namanya atau dihapus

Atribut berikut yang diperkenalkan di .NET 5 Pratinjau 8 telah dihapus atau diganti namanya: MinimumOSPlatformAttribute, , RemovedInOSPlatformAttributedan ObsoletedInOSPlatformAttribute.

Deskripsi perubahan

.NET 5 Pratinjau 8 memperkenalkan atribut berikut di System.Runtime.Versioning namespace:

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

Di .NET 5 Pratinjau 8, ketika proyek menargetkan rasa khusus OS .NET 5 dengan menggunakan moniker kerangka kerja target seperti net5.0-windows, build menambahkan atribut tingkat System.Runtime.Versioning.MinimumOSPlatformAttribute perakitan.

Di .NET 5 RC1, ObsoletedInOSPlatformAttribute telah dihapus, dan MinimumOSPlatformAttributeRemovedInOSPlatformAttribute telah diganti namanya sebagai berikut:

Pratinjau 8 nama RC1 dan nama yang lebih baru
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

Di .NET 5 RC1 dan yang lebih baru, ketika proyek menargetkan rasa khusus OS .NET 5 dengan menggunakan moniker kerangka kerja target seperti net5.0-windows, build menambahkan atribut tingkat SupportedOSPlatformAttribute perakitan.

Alasan untuk berubah

.NET 5 Pratinjau 8 memperkenalkan atribut untuk System.Runtime.Versioning menentukan platform yang didukung untuk API. Atribut dikonsumsi oleh penganalisis kompatibilitas Platform untuk menghasilkan peringatan build saat API khusus platform digunakan pada platform yang tidak mendukung API tersebut.

Untuk .NET 5 RC1, fitur tambahan ditambahkan ke penganalisis kompatibilitas platform untuk pengecualian platform. Fitur ini memungkinkan API ditandai sebagai sepenuhnya tidak didukung pada platform OS. Fitur tersebut meminta perubahan pada atribut, termasuk menggunakan nama yang lebih cocok. ObsoletedInOSPlatformAttribute dihapus karena tidak lagi diperlukan.

Versi yang diperkenalkan

5.0 RC1

Saat Anda menargetkan ulang proyek dari Pratinjau .NET 5 8 ke .NET 5 RC1, Anda mungkin mengalami kesalahan build atau run-time karena perubahan ini. Misalnya, penggantian MinimumOSPlatformAttribute nama kemungkinan akan menghasilkan kesalahan, karena atribut diterapkan ke rakitan khusus platform pada waktu build, dan artefak build lama masih akan mereferensikan nama API lama.

Contoh kesalahan build-time:

  • kesalahan CS0246: Jenis atau nama namespace layanan 'MinimumOSPlatformAttribute' tidak dapat ditemukan (apakah Anda kehilangan referensi menggunakan direktif atau perakitan?)
  • kesalahan CS0246: Nama jenis atau namespace layanan 'RemovedInOSPlatformAttribute' tidak dapat ditemukan (apakah Anda kehilangan referensi menggunakan direktif atau rakitan?)
  • kesalahan CS0246: Nama jenis atau namespace layanan 'ObsoletedInOSPlatformAttribute' tidak dapat ditemukan (apakah Anda kehilangan menggunakan direktif atau referensi rakitan?)

Contoh kesalahan run-time:

Pengecualian tidak dapat ditangani. System.TypeLoadException: Tidak dapat memuat tipe 'System.Runtime.Versioning.MinimumOSPlatformAttribute' dari assembly 'System.Runtime, Version=5.0.0.0, Culture=netral, PublicKeyToken=b03f5f7f11d50a3a'.

Untuk mengatasi kesalahan ini:

  • Perbarui referensi apa pun dari MinimumOSPlatformAttribute ke SupportedOSPlatformAttribute.
  • Perbarui referensi apa pun dari RemovedInOSPlatformAttribute ke UnsupportedOSPlatformAttribute.
  • Hapus referensi apa pun ke ObsoletedInOSPlatformAttribute.
  • Bangun kembali proyek Anda (atau lakukan clean + build) untuk menghapus artefak build lama.

API yang Terpengaruh

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute