Genel bütünleştirilmiş kod önbelleği API'leri kullanımdan kaldırıldı
.NET Core ve .NET 5 ve sonraki sürümleri, .NET Framework'te mevcut olan genel derleme önbelleği (GAC) kavramını ortadan kaldırır. Bu nedenle, GAC ile ilgilenen tüm .NET Core ve .NET 5+ API'leri başarısız olur veya işlem gerçekleştirmez.
Geliştiricileri bu API'lerden uzaklaştırmaya yardımcı olmak için, GAC ile ilgili bazı API'ler eski olarak işaretlenir ve derleme zamanında bir SYSLIB0005
uyarı oluşturur. Bu API'ler .NET'in gelecekteki bir sürümünde kaldırılabilir.
Açıklama değiştirildi
Aşağıdaki API'ler kullanım dışı olarak işaretlenir.
API | Eski olarak işaretlendi... |
---|---|
Assembly.GlobalAssemblyCache | 5.0 RC1 |
.NET Framework 2.x - 4.x'te, GlobalAssemblyCache sorgulanan derleme GAC'den yüklendiyse ve false
diskte farklı bir konumdan yüklendiyse özelliği döndürürtrue
. .NET Core 2.x - 3.x'te, GlobalAssemblyCache GAC'nin .NET Core'da mevcut olmadığını yansıtan her zaman döndürür false
.
Assembly asm = typeof(object).Assembly;
// Prints 'True' on .NET Framework, 'False' on .NET Core.
Console.WriteLine(asm.GlobalAssemblyCache);
.NET 5 ve sonraki sürümlerinde GlobalAssemblyCache özelliği her zaman döndürülmeye false
devam eder. Ancak, özellik alıcısı, çağıranlara özelliğe erişmeyi durdurmaları gerektiğini belirtmek için eski olarak da işaretlenir. Kitaplıklar ve uygulamalar, her zaman .NET Core ve .NET 5 ve sonraki sürümlerde döndürdüğündenfalse
, çalışma zamanı davranışı hakkında belirlemeler yapmak için API'yi kullanmamalıdırGlobalAssemblyCache.
Assembly asm = typeof(object).Assembly;
// Prints 'False' on .NET 5+; also produces warning SYSLIB0005 at compile time.
Console.WriteLine(asm.GlobalAssemblyCache);
Bu yalnızca derleme zamanı değişikliğidir. .NET Core'un önceki sürümlerinde çalışma zamanı değişikliği yoktur.
Değişiklik nedeni
Genel derleme önbelleği (GAC), .NET Core ve .NET 5 ve sonraki sürümlerde kavram olarak mevcut değildir.
Sürüm kullanıma sunulmuştur
.NET 5.0
Önerilen eylem
Uygulamanız özelliği sorgularsa GlobalAssemblyCache çağrıyı kaldırmayı göz önünde bulundurun. Çalışma zamanında "GAC'deki derleme"-akış ile "GAC'de olmayan derleme" akışı arasında seçim yapmak için değerini kullanırsanız GlobalAssemblyCache , akışın .NET Core veya .NET 5+ uygulaması için hala anlamlı olup olmadığını yeniden düşünün.
Eski API'leri kullanmaya devam etmeniz gerekiyorsa, uyarıyı
SYSLIB0005
kodda gizleyebilirsiniz.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.
Ayrıca proje dosyanızda uyarıyı gizleyebilirsiniz ve bu da uyarıyı projedeki tüm kaynak dosyalar için devre dışı bırakır.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0005 project-wide --> <NoWarn>$(NoWarn);SYSLIB0005</NoWarn> </PropertyGroup> </Project>
Gizlenmesi
SYSLIB0005
yalnızca kullanımdan kaldırılma uyarısını GlobalAssemblyCache devre dışı bırakır. Diğer uyarıları devre dışı bırakmaz.
Etkilenen API’ler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin