# .NET Standard overview

{% hint style="success" %}
The **.NET Standard** is a formal specification of .NET APIs that are intended to be available on all .NET implementations.
{% endhint %}

The motivation behind the .NET Standard is establishing greater uniformity in the .NET ecosystem.

The .NET Standard enables the following key scenarios:

* Defines uniform set of BCL APIs for all .NET implementations to implement, independent of workload.
* Enables developers to produce portable libraries that are usable across .NET implementations, using this same set of APIs.
* Reduces or even eliminates conditional compilation of shared source due to .NET APIs, only for OS APIs.

### .NET implementation support <a href="#net-implementation-support" id="net-implementation-support"></a>

The following table lists the **minimum** platform versions that support each .NET Standard version.&#x20;

| .NET Standard              | **1.0** | **1.1** | **1.2** | **1.3** | **1.4** | **1.5**    | **1.6**    | **2.0**    |
| -------------------------- | ------- | ------- | ------- | ------- | ------- | ---------- | ---------- | ---------- |
| .NET Core                  | 1.0     | 1.0     | 1.0     | 1.0     | 1.0     | 1.0        | 1.0        | 2.0        |
| .NET Framework 1           | 4.5     | 4.5     | 4.5.1   | 4.6     | 4.6.1   | 4.6.1 2    | 4.6.1 2    | 4.6.1 2    |
| Mono                       | 4.6     | 4.6     | 4.6     | 4.6     | 4.6     | 4.6        | 4.6        | 5.4        |
| Xamarin.iOS                | 10.0    | 10.0    | 10.0    | 10.0    | 10.0    | 10.0       | 10.0       | 10.14      |
| Xamarin.Mac                | 3.0     | 3.0     | 3.0     | 3.0     | 3.0     | 3.0        | 3.0        | 3.8        |
| Xamarin.Android            | 7.0     | 7.0     | 7.0     | 7.0     | 7.0     | 7.0        | 7.0        | 8.0        |
| Universal Windows Platform | 10.0    | 10.0    | 10.0    | 10.0    | 10.0    | 10.0.16299 | 10.0.16299 | 10.0.16299 |
| Unity                      | 2018.1  | 2018.1  | 2018.1  | 2018.1  | 2018.1  | 2018.1     | 2018.1     | 2018.1     |

### .NET Standard versioning rules

There are two primary versioning rules:

* **Additive**: .NET Standard versions are logically concentric circles: higher versions incorporate all APIs from previous versions. There are no breaking changes between versions.
* **Immutable**: Once shipped, .NET Standard versions are frozen. New APIs first become available in specific .NET implementations, such as .NET Core. If the .NET Standard review board believes the new APIs should be available for all .NET implementations, they're added in a new .NET Standard version.

### Package representation

The primary distribution vehicle for the .NET Standard reference assemblies is **NuGet packages**. Implementations are delivered in a variety of ways, appropriate for each .NET implementation.

The `NETStandard.Library` metapackage references the complete set of NuGet packages that define .NET Standard. The most common way to target `netstandard` is by referencing this metapackage. It describes and provides access to the \~40 .NET libraries and associated APIs that define .NET Standard. You can reference additional packages that target `netstandard` to get access to additional APIs.
