Over the last few years, .NET and indeed Microsoft, have been going through a transformation. It started with opening up .NET and the .NET Core project, followed by the acquisition of Xamarin and removing all licensing burdens from Mono. With all this growth, there was undoubtedly going to be some pain and that's come now in the form of .NET Standard.
It's short-term pain, however. With Microsoft's efforts to make .NET cross-platform and as accessible as possible, on top of everything the Mono team has done and Microsoft's own considerations with the "legacy" .NET Framework, there's no unified way of going about things.
.NET Standard is Microsoft's answer to this. The company's Immo Landwerth has a post explaining the details of the initiative, which includes the following summary:
.NET Standard solves the code sharing problem for .NET developers across all platforms by bringing all the APIs that you expect and love across the environments that you need: desktop applications, mobile apps & games, and cloud services:
- .NET Standard is a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation.
- .NET Standard 2.0 will be implemented by .NET Framework, .NET Core, and Xamarin. For .NET Core, this will add many of the existing APIs that have been requested.
- .NET Standard 2.0 includes a compatibility shim for .NET Framework binaries, significantly increasing the set of libraries that you can reference from your .NET Standard libraries.
- .NET Standard will replace Portable Class Libraries (PCLs) as the tooling story for building multi-platform .NET libraries.
It's going to take some time for the dust to settle — .NET Standard introduces a number of breaking changes to .NET Core — so don't feel too overwhelmed. The big takeaway is that Microsoft is trying to get ahead of fragmentation and compatibility issues.
It should pan out better for everyone in the long run... as long as Microsoft doesn't drop a ".NET Default" or ".NET Final_ActuallyFinal_YesReallyFinal" next year.
Introducing .NET Standard [Microsoft]