Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET Core und .NET 5 und höhere Versionen beseitigen das Konzept des globalen Assemblycaches (GAC), der in .NET Framework vorhanden war. Daher schlagen alle .NET Core- und .NET 5+-APIs, die mit dem GAC umgehen, entweder fehl oder führen keinen Vorgang aus.
Um Entwickler von diesen APIs wegzulenken, werden einige GAC-bezogene APIs als veraltet markiert und zur Kompilierungszeit eine SYSLIB0005
Warnung generiert. Diese APIs können in einer zukünftigen Version von .NET entfernt werden.
Änderungsbeschreibung
Die folgenden APIs sind als veraltet gekennzeichnet.
Programmierschnittstelle (API) | Als veraltet markiert in... |
---|---|
Assembly.GlobalAssemblyCache | 5.0 RC1 |
In .NET Framework 2.x - 4.x gibt die GlobalAssemblyCache Eigenschaft zurück true
, ob die abgefragte Assembly aus dem GAC geladen wurde und false
ob sie von einem anderen Speicherort auf dem Datenträger geladen wurde. In .NET Core 2.x - 3.x gibt GlobalAssemblyCache immer false
zurück, was zeigt, dass das GAC nicht in .NET Core vorhanden ist.
Assembly asm = typeof(object).Assembly;
// Prints 'True' on .NET Framework, 'False' on .NET Core.
Console.WriteLine(asm.GlobalAssemblyCache);
In .NET 5 und höheren Versionen gibt GlobalAssemblyCache immer false
zurück. Der Getter für die Eigenschaft ist jedoch ebenfalls als veraltet markiert, um Aufrufer darauf hinzuweisen, dass sie nicht mehr auf die Eigenschaft zugreifen sollen. Bibliotheken und Apps sollten die GlobalAssemblyCache API nicht verwenden, um Entscheidungen über das Laufzeitverhalten zu treffen, da sie in .NET Core und .NET 5 und höheren Versionen immer false
zurückgibt.
Assembly asm = typeof(object).Assembly;
// Prints 'False' on .NET 5+; also produces warning SYSLIB0005 at compile time.
Console.WriteLine(asm.GlobalAssemblyCache);
Dies ist eine Änderung, die nur die Kompilierzeit betrifft. Es gibt keine Laufzeitänderung von früheren Versionen von .NET Core.
Grund für Änderung
Der globale Assemblycache (GAC) ist in .NET Core und .NET 5 und höheren Versionen nicht als Konzept vorhanden.
Eingeführte Version
.NET 5.0
Empfohlene Aktion
Wenn Ihre Anwendung die GlobalAssemblyCache Eigenschaft abfragt, sollten Sie den Aufruf entfernen. Wenn Sie den GlobalAssemblyCache Wert verwenden, um zwischen einer "Assembly im GAC"-Fluss und einer "Assembly nicht im GAC"-Fluss zur Laufzeit zu wählen, sollten Sie überdenken, ob der Fluss für eine .NET Core- oder .NET 5+-Anwendung weiterhin sinnvoll ist.
Wenn Sie die veralteten APIs weiterhin verwenden müssen, können Sie die
SYSLIB0005
Warnung im Code unterdrücken.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.
Sie können auch die Warnung in der Projektdatei unterdrücken, wodurch die Warnung für alle Quelldateien im Projekt deaktiviert wird.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- NoWarn below will suppress SYSLIB0005 project-wide --> <NoWarn>$(NoWarn);SYSLIB0005</NoWarn> </PropertyGroup> </Project>
Durch das Unterdrücken von
SYSLIB0005
wird nur die Veraltungswarnung GlobalAssemblyCache deaktiviert. Es werden keine anderen Warnungen deaktiviert.