Ältere Frameworkversionen aus Paket gelöscht

Ab .NET 6 können die Kernbibliothekspakete nicht mehr in Projekten installiert werden, deren Zielframework älter ist als:

  • .NET Framework 4.6.1
  • .NET Core 3.1
  • .NET-Standard 2.0

Beschreibung der Änderung

Zuvor konnten Sie die Pakete auf die neueste Version aktualisieren, auch wenn Sie aus einem Framework stammten, das älter als .NET Framework 4.6.1, .NET Core 3.1 oder .NET Standard 2.0 war. Ab .NET 6 können Sie das Referenzpaket nicht mehr auf die neueste Version aktualisieren, wenn Sie auf ein betroffenes Paket aus einem früheren Framework verweisen.

Eingeführt in Version

.NET 6

Grund für die Änderung

Die Fortsetzung der Erstellung für alle Frameworks erhöht die Komplexität und Größe eines Pakets. In der Vergangenheit hat .NET dieses Problem gelöst, indem es Erstellungen nur für aktuelle Frameworks vornahm und binäre Binärdateien für ältere Frameworks erntete. „Ernten“ bedeutet, dass die frühere Version des Pakets während der Erstellung heruntergeladen wird und die Binärdateien extrahiert werden.

Die Nutzung einer geernteten Binärdatei bedeutet, dass Sie immer Aktualisierungen vornehmen können, ohne sich Gedanken darüber machen zu müssen, ob ein Framework gelöscht wird. Es bedeutet aber auch, dass Sie keine Fehlerbehebungen oder neuen Features erhalten. Mit anderen Worten: Geerntete Ressourcen können nicht gewartet werden. Das ist Ihnen verborgen, da Sie das Paket weiterhin auf eine neuere Version aktualisieren können, obwohl Sie dieselbe alte Binärdatei verwenden, die nicht mehr aktualisiert wird.

Ab .NET 6 führt .NET keinerlei Form des Erntens mehr aus, um sicherzustellen, dass alle gelieferten Ressourcen gewartet werden können.

Wenn Ihr Projekt verwaltet, aber nicht weiterentwickelt wird, aktualisieren Sie die betroffenen Pakete einfach nicht. Dies ist im Allgemeinen kein großer Nachteil, da Sie bereits eine fixierte Binärdatei verwenden.

Wenn Ihr Projekt weiterentwickelt wird, aktualisieren Sie es auf eine neuere Frameworkversion, z. B.:

  • .NET Framework 4.6.1
  • .NET Core 3.1
  • .NET-Standard 2.0

Betroffene APIs

Die folgenden Pakete enthalten keine alten Frameworks mehr:

  • Microsoft.Extensions.DependencyModel
  • Microsoft.Win32.Registry.AccessControl
  • Microsoft.Win32.SystemEvents
  • System.Collections.Immutable
  • System.ComponentModel.Annotations
  • System.ComponentModel.Composition
  • System.ComponentModel.Composition.Registration
  • System.Composition.AttributedModel
  • System.Composition.Convention
  • System.Composition.Hosting
  • System.Composition.Runtime
  • System.Composition.TypedParts
  • System.Data.Odbc
  • System.Data.OleDb
  • System.Diagnostics.DiagnosticSource
  • System.Diagnostics.EventLog
  • System.Diagnostics.PerformanceCounter
  • System.DirectoryServices
  • System.DirectoryServices.AccountManagement
  • System.DirectoryServices.Protocols
  • System.Drawing.Common
  • System.IO.Packaging
  • System.IO.Pipelines
  • System.Management
  • System.Net.Http.WinHttpHandler
  • System.Net.WebSockets.WebSocketProtocol
  • System.Numerics.Tensors
  • System.Reflection.Context
  • System.Reflection.Metadata
  • System.Reflection.MetadataLoadContext
  • System.Runtime.Caching
  • System.Runtime.CompilerServices.Unsafe
  • System.Security.Cryptography.Cng
  • System.Security.Cryptography.OpenSsl
  • System.Security.Cryptography.Pkcs
  • System.Security.Cryptography.ProtectedData
  • System.Security.Permissions
  • System.ServiceProcess.ServiceController
  • System.Speech
  • System.Text.Encoding.CodePages
  • System.Text.Encodings.Web
  • System.Threading.AccessControl
  • System.Threading.Channels
  • System.Threading.Tasks.Dataflow
  • System.Windows.Extensions

Die folgenden Pakete werden nicht mehr aktualisiert, da ihre Implementierung jetzt Teil der .NET 6-Plattform ist:

  • Microsoft.Win32.Registry
  • System.ComponentModel.Annotations
  • System.IO.FileSystem.AccessControl
  • System.IO.Pipes.AccessControl
  • System.Security.AccessControl
  • System.Security.Cryptography.Cng
  • System.Security.Cryptography.OpenSsl
  • System.Security.Principal.Windows