0

I'm trying to wrap my head around the NuGet package system. Recently I released a class library for NuGet, targeting only .NET Framework 4.5.2, but as of demand, I decided to create a new class library targeting .NETStandard 1.4.

Here's where I get lost. Is is possible for me to target multiple frameworks in a single NuGet package, taking this scenario of having two different projects?

Would it make sense for me to remove the .NET Framework 4.5.2 project, and replace it with my .NETStandard 1.4 project? The code is 100% the same.

Any suggestions or best practices to navigate through such a scenario?

Detilium
  • 2,868
  • 9
  • 30
  • 65

1 Answers1

0

If you need to support .NET Framework 4.5.2, you'd need to lower the version of .NET Standard to 1.2 as per compatibility matrix since .NET Standard 1.4 packages can only be used on .NET Framework 4.6.1+.

If this is not possible for you, you can multi-target your project so that the same project is built for a version of .NET Standard and .NET Framework and packages into the same NuGet package. .NET Framework projects referencing that package will prefer the .NET Framework dll over the .NET Standard dll in the same package.

You can do this by changing the .NET Standard project from

<TargetFramework>netstandard1.4</TargetFramework>

to

<TargetFrameworks>net452;netstandard1.4</TargetFrameworks>

By changing the property to TargetFrameworks (plural), the project will now be built twice - once per specified framework.

Martin Ullrich
  • 94,744
  • 25
  • 252
  • 217