きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

.NET Standard × .NET Framework × .NET Core の関係をまとめてみました

この記事の目的

.NET Standard、.NET Framework、.NET Core (あと、Mono)の立ち位置を整理する。

本題

ごちゃごちゃになりやすい.NETランタイムのそれぞれの位置関係を整理しました。
整理した図を作成するにあたり、以下のブログを参考にさせていただきました。
kalapos.net

整理した結果は以下の通りです。
f:id:kinakomotitti:20180221220941p:plain

.NET Coreの新バージョン=.NET Standardだと思っていました。
完全に誤解していましたねw
以下は、.NET Standardについての説明*1の引用です。

.NET Standard
.NET の各実装で使用可能な .NET API の正式な仕様。
.NET Standard の仕様は、ドキュメントではライブラリとも呼ばれます。 ライブラリには仕様 (インターフェイス) だけでなく API の実装も含まれるため、.NET Standard を "ライブラリ" と呼ぶのは誤解を招きます。 .NET Standard メタパッケージ (NETStandard.Library) の名前を参照する場合を除き、そのような使用法をドキュメントから消去する予定です。

一方、誤解していた.NET Coreは以下のように説明されています。

.NET のクロスプラットフォームで高パフォーマンスなオープン ソースの実装。 Core 共通言語ランタイム (CoreCLR)、Core AOT ランタイム (CoreRT、開発中)、Core 基本クラス ライブラリ、Core SDK が含まれます。

おなじみの.NET Frameworkは以下のように説明されています。

Windows でのみ動作する .NET の実装。 共通言語ランタイム (CLR)、基本クラス ライブラリ、および ASP.NETWindows フォーム、WPF などのアプリケーション フレームワーク ライブラリが含まれます。

まとめ

.NET Standardは、仕様。
.NET Coreは、クロスプラットフォーム.NET FrameworkOSS
.NET Frameworkは、Windows OSでのみ実行可能なフレームワーク