Skip to content
This repository has been archived by the owner on Dec 14, 2018. It is now read-only.

Microsoft.Extensions.Caching.Abstractions should target full .NET Framework #291

Closed
shaynevanasperen opened this issue Mar 30, 2017 · 1 comment

Comments

@shaynevanasperen
Copy link

I want to publish a NuGet package that targets netstandard1.1, netstandard1.3, net45 and net46. My package depends on Microsoft.Extensions.Caching.Abstractions but since that package only targets netstandard1.0, I can't support net45 or net46 without requiring consumers stuck on those older frameworks having to install the whole contents of the NetStandard.Library 1.6.1 meta-package.

This actually highlights a much wider issue: In theory, libraries targeting NetStandard are supposed to be natively supported by the full .NET Framework. But in practice, if they don't also target older TFMs then consuming projects built against the full .NET Framework have to install a load of NuGet packages:

image

Which of the above libraries is actually required by Microsoft.Extensions.Caching.Abstractions? I bet maybe one or two only! It should depend on only the smallest set of dependencies it needs, rather than the whole NetStandard.Library 1.6.1 meta-package!

As a NuGet package author, I shouldn't have to target older TFMs such as net45 and net46, but unfortunately I do have to in order to not scare the living crap out of anyone who wants to install my package in a project that has not yet, or will never be, upgraded to .NET Core.

I even tried adding this to my consuming .NET Framework project, but unfortunately it doesn't work:

<PropertyGroup>
  <PackageTargetFallback>$(PackageTargetFallback);netstandard1.0;</PackageTargetFallback>
</PropertyGroup>

NetStandard was supposed to be great. It's a shame Microsoft messed it up so badly. In the meantime, until it get's fixed at the platform level, please make the Microsoft.Extensions.Caching.Abstractions library target older TFMs.

@natemcmaster
Copy link
Contributor

It seems there are a few separate concerns here, but I'll simplify this to (1) too many packages and (2) .NET Framework 4.5 support.

As we announced last week, we intend to move this and all Microsoft.Extensions.* packages to .NET Standard 2.0 before the 2.0.0 release (see aspnet/Announcements#249). This will address (1) as NETStandard.Library 2.0.0 will consolidate the dozens of System.* packages down to two. However, this will not address (2) as a part of this. .NET Standard 2.0 requires .NET Framework 4.6.1.

Closing as this is not something we indent to change at the moment. If you have more feedback, dotnet/aspnetcore#2045 is the best place to discuss this move.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants