Answering your question in a different way: the library should focus on the environments that require the SDK. If the SDK does not need to use netstandard (or before .NET Core RC2 dotnet ).
dnxcore50 DNX SDK running on CoreCLR / CoreFx ( deprecated , use netcoreapp1.0 ).dnx451 DNX SDK running on .Net 4.5.1 (Desktop CLR / Full BCL and FCL) ( deprecated , use net451 ).net46 .Net Framework 4.6 SDK runs on the desktop CLR / Full BCL and FCL.uap10.0 UWP Windows 10 SDK running on .Net Native / CoreFx.netcoreapp1.0 .NET Core 1.0 SDK running on CoreCLR / CoreFx.netstandard1.5 (RC2, dotnet before) any pure IL code that declares its dependencies (System.Runtime libraries (based) instead of PCL contracts). Framework dependencies are available for .Net 4.5.x and later, .NET Core or UWP (System.Runtime library installed in different versions). Since dotnet outdated with RC2, use netstandard instead.netstandard2.0 (.NET Core 2.0; ~ JUN 2017) any pure IL code that relies solely on the netstandard.dll features that all platforms (.NET Core, .NET Framework, Xamarin, Mono, Unity3D) must implement ( or throw a NotImplementedException). netstandard2.x is roughly the BCL.NET Framework library (without FCL components such as WMI, WinForms, WPF, WCF, WWF, ...). Thanks to compatible gaskets, most existing NuGet packages will automatically netstandard2.0 .
So, if your library has only some algorithms or is not platform netstandard , use netstandard / dotnet . If any of your dependencies is limited, this dependency will propagate to the application (for example, DNX, UWP, .Net46) that uses it.
I can only highlight Malachi in a series of articles by Oren. (he just wrote a new one: https://oren.codes/2015/07/29/targeting-net-core/ in the same thread).
ps: dotnet / netstandard not a specific runtime, it is an abstraction. This is the goal, which in this case does not even indicate the execution time, but instead says: everything that interprets the IL goes right. For example, dnxcore5 is a target that defines an SDK (DNX) that has a specific runtime (CoreCLR). In this case, you can make additional assumptions regarding runtime behavior (for example, using JIT, the availability of the x-plat implementation, etc.).
pps: remember that the dotnet name dotnet been converted to the term netstandard with the upcoming version of RC2. In addition, the full DNX SDK has been split between the .NET Core and ASP.NET commands. Thus, the proxy server for .NET Core (CoreCLR / CoreFx) is netcoreapp1.0 , and 99% of the ASP.NET stack is just libraries with netstandard1.5 . Nicknames DNX ( dnx451 and dnxcore50 ), where they are deprecated. When running ASP.NET Core on the .NET Framework (instead of .NET Core) use net451 . Heavy read for details: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
ppps: keep in mind that the concept of netstandard1.x dependency netstandard1.x not been finalized, but has been changed to one (huge) standard contract (32k APIs; netstandard2.0 ), which should be implemented by all platforms, including the upcoming .NET Core 2.0 . This change has the advantage that most of the existing ecosystem of the NuGet package (which refers to mscorlib and friends) can be integrated into netstandard2.0 packages using intermediate compatibility pads.
Thomas Aug 07 '15 at 11:10 2015-08-07 11:10
source share