Portable class Libraries and the Problem

In the beginning building applications for .Net was simple, developer had only one framework to target while building the application. This changed when Silverlight came. developers wanted to share libraries for Silverlight and .Net framework. Which caused the origin or Profiles.


Profiles are a set of reference libraries, that have references to the libraries available in different platforms. In order to make sure any specific code can be portable, you can compile your code against to specific Profile.

  • Profile 14
    • .Net framework 4.0
    • Silverlight 5.0
  • Profile 37
    • Profile 14 (.Net framework 4.0 & Silverlight 5.0)
    • .Net framework 4.5

The trouble

When more platforms started available .Net framework like Windows Phone and their multiple version, more and more profiles were created for all possible combinations of platforms and their versions.

When .Net core released, it escalated the issue to another level. .Net core are supported in following platforms

  • Linux
  • Mac
  • Xamrin.iOS
  • Xamrin.Android
  • UWP
  • Tizen ( Operating system for TVs developed by Samsung )

How .Net core will solve this problem?

The Dot net standard solves the issue by creating a reference of a subset of APIs available from .Net core, .Net framework,

By targeting .Net Standard, it ensures that your code will support all the platforms that .Net Standard library targets.

dotnet standard overview

dotnet standard overview

The .Net standard will gradually add more more APIs from all the platforms and versions.

Dot net standard road map

It is better to verify the users of your code before targeting higher .Net standard. In future, Microsoft may remove APIs that are less important.

Dependencies on dependencies

If you want to support .Net standard on your code and if you are using other .Net libraries (such as Castle.core, JSON.NET etc.. ) from Nuget, you will have to wait till all your dependencies are upgraded to your expected .Net standard.