Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dropping older framework versions #190

Open
terrajobst opened this issue Jun 17, 2021 · 0 comments
Open

Dropping older framework versions #190

terrajobst opened this issue Jun 17, 2021 · 0 comments

Comments

@terrajobst
Copy link
Member

Our packages drop support for frameworks older than .NET Framework 4.6.1, .NET Core 3.1, or .NET Standard 2.0.

Reason

Dropping a framework from a package is a source breaking change. At the same time, continuing to build for all frameworks we ever shipped increases the complexity and size of a package. In the past, we've solved this issue by harvesting, which basically means:

  1. We build only for "current" frameworks
  2. During build, we download the earlier version of the package and "harvest" the binaries for earlier frameworks we no longer build for

While this means that you can always update without worrying that we drop a framework it also means that you'll never get any bug fixes or new features if you consume a harvested binary. In other words, harvested assets can't be serviced which is now hidden because from your point of view you're able to keep updating the package to a later version even thought you're consuming the same old binary that we're no longer updating.

For .NET 6, we plan to no longer perform any form of harvesting to ensure that all assets we ship can be serviced. This means we're dropping anything older than:

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

If you're currently referencing an impacted package from an earlier framework, you'll no longer be able to update the referenced package to a later version. Your choice is to either retarget your project to a later version or not updating the referenced package (which is generally not a huge take back because you're already consuming a frozen binary anyways).

Affected packages

These packages no longer ship old frameworks:

  • Microsoft.Extensions.DependencyModel
  • Microsoft.Win32.Registry.AccessControl
  • Microsoft.Win32.SystemEvents
  • 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.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.Reflection.Context
  • System.Runtime.Caching
  • System.Runtime.CompilerServices.Unsafe
  • System.Security.Cryptography.Cng
  • System.Security.Cryptography.OpenSsl
  • System.Security.Cryptography.Pkcs
  • System.Security.Cryptography.ProtectedData
  • System.ServiceProcess.ServiceController
  • System.Speech
  • System.Text.Encoding.CodePages
  • System.Text.Encodings.Web
  • System.Threading.AccessControl
  • System.Threading.Channels

These packages will no longer be updated because their implementation is now part of the .NET 6 platform:

  • 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

Timelines

Many of these changes are shipping in .NET 6 Preview 5 while some will ship in .NET 6 Preview 6.

Discussion

For a discussion, please comment in dotnet/runtime#54365.

@dotnet dotnet locked and limited conversation to collaborators Jun 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant