.NET Standard, .NET Core, PCL

The documents around this are indeed confusing, but it can roughly be understood as this:

  • PCL: libraries that target a set of platform (have the 'least common denominator' of APIs of those platforms). So when writing a PCL you're saying I want to target platform A, B, C

  • .NET standard: a 'standard' set of APIs rather than a platform. So basically you don't care about platforms, just the standard (version 1.3, 1.6 ...) and your code will work on all platforms that support it.

  • .NET core is not to be confused here, it's 'another version' of the .NET framework. .NET standard will work cross-runtime (.NET framework, .NET core, Mono)

So I guess .NET standard is the way to go :)


I believe this resource answers most of your questions:

https://docs.microsoft.com/en-us/dotnet/articles/standard/library

The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes. The motivation behind the Standard Library is establishing greater uniformity in the .NET ecosystem.

So as I understand it, the other library types are platform specific and .NET standard is platform agnostic to a point.

If you would like your code available on different platforms then .NET standard seems ideal but pay close attention to which version of the .NET standard that the other platforms support (see table in link).

Hope this helps