dotnet / dotnet/announcements

.NET Standard 2.0 is final

Open
#24 2 comments 0 reactions 0 assignees View on GitHub
.NET Standard Enhancement
Dominant language
No language data
Stars
1.4k
Forks
53
PR merge metrics
No merged PRs in 30d

Description

## Summary

[.NET Standard 2.0](https://github.com/dotnet/standard/blob/master/docs/versions/netstandard2.0.md) is final.

You can now start producing .NET Standard 2.0 libraries and NuGet packages. Please use the latest [.NET Core 2.0 Preview 2](https://www.microsoft.com/net/core/preview) as it contains many improvements that were necessary to provide a good experience.

## Details

* **Bigger API Surface**: We have more than doubled the set of available APIs from **13k** in [.NET Standard 1.6](https://github.com/dotnet/standard/blob/master/docs/versions/netstandard1.6.md) to **32k** in [.NET Standard 2.0](https://github.com/dotnet/standard/blob/master/docs/versions/netstandard2.0.md). Most of the added APIs are .NET Framework APIs. These additions make it much easier to port existing code to .NET Standard, and, by extension, to any .NET implementation of .NET Standard, such as .NET Core 2.0 and the upcoming version of UWP.

* **.NET Framework compatibility mode**: The vast majority of NuGet packages are currently still targeting .NET Framework. Many projects are currently blocked from moving to .NET Standard because not all their dependencies are targeting .NET Standard yet. That's why we added a compatibility mode that allows .NET Standard projects to depend on .NET Framework libraries as if they were compiled for .NET Standard. Of course, this may not work in all cases (for instance, if the .NET Framework binaries uses WPF), but we found that [70% of all NuGet packages on nuget.org are API compatible][video] with .NET Standard 2.0, so in practice it unblocks many projects.

[video]: https://www.youtube.com/watch?v=iIlQer4LEac

* **Broad platform support**. .NET Standard 2.0 is [supported on the following platforms](https://github.com/dotnet/standard/blob/master/docs/versions.md):
- .NET Framework 4.6.1
- .NET Core 2.0
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Mac 3.8
- Xamarin.Android 7.5
- UWP is work in progress and will ship later this year.

## Tooling Prerequisites

In general, make sure you run the latest version of the tooling:

* **.NET Core SDK**. You always need to install [.NET Core 2.0 Preview 2](https://www.microsoft.com/net/core/preview). This also includes the CLI (`dotnet`) for building packages, so if you only want to use the CLI, you can stop here.
* **Visual Studio**. If you want to use Visual Studio for authoring .NET Standard 2.0 libraries, you also need to install [Visual Studio 2017 15.3](https://www.visualstudio.com/vs/preview/). Make sure to use 15.3 and not an earlier version, as this release addressed a couple of key issues to provide a good experience. If you only need to consume .NET Standard 2.0 libraries, you can do that even in Visual Studio 2015 but you'll need NuGet client 3.6 or higher ([download from Nuget.org/downloads](https://www.nuget.org/downloads))
* **Visual Studio for Mac**. The latest version of [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/) supports building .NET Standard 2.0 libraries.
* **Rider**. The [latest version](https://www.jetbrains.com/rider/download) also has support for .NET Standard 2.0.

Learn more [by reading the .NET Standard FAQ](http://aka.ms/netstandardfaq).

## Discussion

For discussion, see https://github.com/dotnet/standard/issues/439.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.