最近在使用Visual Studio 2019創建C#類庫的時候,發現可以分別創建以下幾種類庫

.Net Core和.Net Framework我是知道的,這個.Net Standard是啥,就覺得有點奇怪。貌似以前用VS2015的時候沒看到啊,VS2017是有的,只是當時不在意。
找了一下,原來在Visual Studio 2015的時候是叫可移植類庫,如下

然后到屬性頁里修改為.Net Standard

那區別是什么呢,如下
.Net Core:.NET Core 是一個開源、跨平台的開發平台,可以用來構建現代、可伸縮和高性能的跨平台軟件應用程序的,包括Asp.Net Core、WPF、WInform等。.Net Core可以使用C#、Visual Basic和F#來進行開發。這里理解為.Net的跨平台版本,適合現在流行的Web、移動、雲服務、微服務等方向的開發。
.Net Framework:這里直接理解為.Net的標准版本,從.Net Framework1.0到今天的.Net Framework4.8
.Net Standard:.NET Standard 是一套正式的 .NET API 規范,等於是一套規范,.Net Core也好,.Net Frameworkd也好,都必須都實現這個規范。
例如,.NET Framework 4.6 實現 .NET Standard 1.3。也就是說,它會公開在 .NET Standard 版本 1.0 到 1.3 中定義的所有 API。 同樣,.NET Framework 4.6.1 實現 .NET Standard 1.4,而 .NET Core 1.0 則實現 .NET Standard 1.6。
目前.Net Framework實現的最高.Net Standard版本是2.0。
詳細可見下表
| .NET Standard | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 |
|---|---|---|---|---|---|---|---|---|---|
| .NET Core | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 2.0 | 3.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 | N/A3 |
參考:
https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard
https://devblogs.microsoft.com/dotnet/announcing-net-standard-2-1/
