API cache perakitan global sudah usang
.NET Core dan .NET 5 dan versi yang lebih baru menghilangkan konsep cache perakitan global (GAC) yang ada di .NET Framework. Dengan demikian, semua API .NET Core dan .NET 5+ yang menangani GAC gagal atau tidak melakukan operasi.
Untuk membantu mengarahkan pengembang menjauh dari API ini, beberapa API terkait GAC ditandai sebagai usang, dan menghasilkan SYSLIB0005
peringatan pada waktu kompilasi. API ini dapat dihapus dalam versi .NET yang akan datang.
Deskripsi perubahan
API berikut ditandai usang.
API | Ditandai usang di... |
---|---|
Assembly.GlobalAssemblyCache | 5.0 RC1 |
Dalam .NET Framework 2.x - 4.x, GlobalAssemblyCache properti mengembalikan true
jika rakitan yang dikueri dimuat dari GAC, dan false
jika dimuat dari lokasi yang berbeda pada disk. Dalam .NET Core 2.x - 3.x, GlobalAssemblyCache selalu mengembalikan false
, mencerminkan bahwa GAC tidak ada di .NET Core.
Assembly asm = typeof(object).Assembly;
// Prints 'True' on .NET Framework, 'False' on .NET Core.
Console.WriteLine(asm.GlobalAssemblyCache);
Di .NET 5 dan versi yang GlobalAssemblyCache lebih baru, properti terus selalu mengembalikan false
. Namun, getter properti juga ditandai sebagai usang untuk menunjukkan kepada penelepon bahwa mereka harus berhenti mengakses properti. Pustaka dan aplikasi tidak boleh menggunakan GlobalAssemblyCache API untuk membuat penentuan tentang perilaku run-time, karena selalu kembali false
dalam versi .NET Core dan .NET 5 dan yang lebih baru.
Assembly asm = typeof(object).Assembly;
// Prints 'False' on .NET 5+; also produces warning SYSLIB0005 at compile time.
Console.WriteLine(asm.GlobalAssemblyCache);
Ini adalah perubahan kompilasi-waktu saja. Tidak ada perubahan run-time dari versi .NET Core sebelumnya.
Alasan untuk berubah
Cache rakitan global (GAC) tidak ada sebagai konsep dalam .NET Core dan .NET 5 dan versi yang lebih baru.
Versi yang diperkenalkan
.NET 5.0
Tindakan yang direkomendasikan
Jika aplikasi Anda mengkueri GlobalAssemblyCache properti , pertimbangkan untuk menghapus panggilan. Jika Anda menggunakan GlobalAssemblyCache nilai untuk memilih antara "assembly in the GAC"-flow vs. "assembly not in the GAC"-flow at run time, pertimbangkan kembali apakah alur masih masuk akal untuk aplikasi .NET Core atau .NET 5+.
Jika Anda harus terus menggunakan API usang, Anda dapat menekan
SYSLIB0005
peringatan dalam kode.Assembly asm = typeof(object).Assembly; #pragma warning disable SYSLIB0005 // Disable the warning. // Prints 'False' on .NET 5+. Console.WriteLine(asm.GlobalAssemblyCache); #pragma warning restore SYSLIB0005 // Re-enable the warning.
Anda juga dapat menekan peringatan dalam file proyek Anda, yang menonaktifkan peringatan untuk semua file sumber dalam proyek.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0005 project-wide --> <NoWarn>$(NoWarn);SYSLIB0005</NoWarn> </PropertyGroup> </Project>
Menekan
SYSLIB0005
hanya menonaktifkan peringatan usang GlobalAssemblyCache . Ini tidak menonaktifkan peringatan lainnya.
API yang Terpengaruh
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