I noticed that after referencing a .net standard lib (1.4) from my .net full project (4.6.1) That my output folder is full of System.*.dll assemblies.
Does this mean that if I target the full framework but reference a .net standard lib I have to ship with the .net standard version(s) of all the System libraries that it uses?
Normally when you make a .NET standard library you want to do Multi-targeting. In your .csproj file you would change your
<TargetFramework>netstandard1.4</TargetFramework>
to
<TargetFrameworks>netstandard1.4;net45</TargetFrameworks>
Notice the adding of the s
to the tag.
Once you do that, and you generate the NuGet package for the library the library will support both .net 4.5 and netstandard directly.
For an example, here is from Json.NET's csproj file.
<TargetFrameworks Condition="'$(DotnetOnly)'==''">net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8</TargetFrameworks>
So it will generate DLLs for .NET 4.5, .NET 4.0, .NET 3.5, .NET 2.0, netstandard 1.0, netstandard 1.3 and a PCL library that targets net45, win8, wpa81, and wp8, All of those dll's will get packaged in to the NuGet package and only the closest match gets used when you reference the package.