Предыдущие версии платформы удалены из пакета
Начиная с .NET 6 пакеты основных библиотек нельзя устанавливать в проекты, целевая платформа которых старее, чем:
- .NET Framework 4.6.1
- .NET Core 3.1.
- .NET Standard 2.0
Описание изменения
Ранее вы смогли обновить пакеты до последней версии, даже если они использовались из платформы старше, чем .NET Framework 4.6.1, .NET Core 3.1 или .NET Standard 2.0. Начиная с .NET 6, при ссылке на такие пакеты из платформы более ранних версий вы больше не сможете обновить указанный пакет до последней версии.
Представленные версии
.NET 6
Причина изменения
Сохранение возможности сборки для всех платформ повышает сложность и увеличивает размер пакета. В прошлом в .NET эта проблема решалась за счет сборки только для текущих платформ и выполнения сбора двоичных файлов для более старых платформ. Сбор означает, что во время сборки загружается более ранняя версия пакета, а двоичные файлы извлекаются.
Хотя использование собранного двоичного файла означает, что вы всегда можете выполнить обновление, не беспокоясь об удалении платформы, вы при этом не получаете исправления ошибок или новые функции. Иными словами, собранные ресурсы не поддерживают обслуживание. Это не заметно, так как вы можете обновлять пакет до более поздней версии, даже если вы используете тот же старый двоичный файл, который больше не обновляется.
Начиная с .NET 6, .NET больше не выполняет сбор ни в какой форме, чтобы обеспечить возможность обслуживания всех поставляемых ресурсов.
Рекомендуемое действие
Если проект поддерживается, но не развивается, просто не обновляйте соответствующие пакеты. В целом, это небольшая потеря, так как вы уже используете зафиксированный двоичный файл.
Если проект развивается, обновите его до более поздней версии платформы, например:
- .NET Framework 4.6.1
- .NET Core 3.1.
- .NET Standard 2.0
Затронутые API
Старые платформы отсутствуют в следующих пакетах:
- 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
- Системы. Рефлексия ion. Контексте
- Системы. Рефлексия ion. Метаданных
- Системы. Рефлексия ion. 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
Следующие пакеты больше не будут обновляться, так как их реализация теперь входит в состав платформы .NET 6:
- 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