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 🙂