Could you name the difference between .Net Core, Portable, Standard, Compact, UWP, and PCL?

Technology CommunityCategory: .NET CoreCould you name the difference between .Net Core, Portable, Standard, Compact, UWP, and PCL?
VietMX Staff asked 3 years ago

The difference:

  • .Net Standard (netstandard) – this is the new cross-platform BCL API. It’s a “standard” in the sense that it’s just an API definition and not an implementation. The idea is that you can compile your library to (a version of) this API and it will run on any platform that supports that version.
  • .Net Core – you can think of this as a reference implementation of netstandard (with a few extra bits). It is a cross-platform implementation of that API. It is possible that UIs and other frameworks may build on it, but for now its only sure foothold is acting as the platform of choice for ASP.NET Core. [Side note: for historical reasons, “.NET Core” is completely different than the netcore NuGet target; when you’re in a NuGet context, netcore means “Windows 8/8.1/10”].
  • .Net Portable and Portable Class Libraries – Portable Class Libraries (PCLs) are a least-common-denominator approach to providing a cross-platform API. They cover a wide range of target platforms, but they are incomplete and not future-proof. They have essentially been replaced by netstandard.
  • .Net Compact – This is a completely different .NET framework with its own unique API. It is completely incompatible with any other framework, PCL, or netstandard version; as such, it is much more difficult to support than any other platform. However, it is still used on devices with tight memory constraints.
  • Universal Windows Platform – This was a Win10-era merging of the API between Windows Phone and desktop, allowing Windows Store apps/libraries to be written for both platforms. This has essentially been replaced by netstandard.