概要
普段なにげなくUnityでC#を使っていたけれど、.NETとか.NET Frameworkとか、.NET Coreとかの違いをよく分かってなかったな~と思ったので、簡単な歴史や名称の違いを自分用にまとめてみました。
間違っている部分があるかもしれませんが、多めに見ていただけますと幸いです。
.NETとは
2000年6月に掲げたMicrosoft .NETという構想が元になっている。
現在のIoTに近い、様々な情報デバイスをネットワークに接続させて、インターネット経由でつながることを目指すというものであった。
その後、Visual Studio .NETが発表され、これが今の.NETの原型になっている。
現在では、Microsoft .NETという呼称は使われておらず、現在使われている.NETは.NET Frameworkの呼称のひとつとなっている。
しかし、後述の内容により、.NET Coreの名称が.NETに変更されたため、非常に分かりづらくなっている。
.NET 4.8(.NET Framework 4.8)と.NET 5.0(旧.NET Core)は似ているが、全く別物である。
.NET Standardとは?
複数の.NET実装で使用できる.NET APIの仕様。
この仕様に従い、.NET Framework、.NET Core、Xamarin.iOS/Mac/Android、UWPといった様々な.NET実装でAPIが実装されている。
つまり、すべての.NET実装で実装するべきAPIの一覧のようなもので、
「.NET Standard実装の共通するAPI」+「各.NET実装の固有のAPI」となる。
.NET Frameworkとは?
.NET Frameworkとは、Microsoftが提供するソフトウェア開発フレームワーク。
Windows系のアプリケーションやWebサービスなどを開発することができる。
.NET Frameworkでは、C#、VB、C++、F#など、複数のプログラミング言語による開発が可能。
2.0/3.0/3.5系と4系で独立しているため、4系をインストールしても2.0/3.0/3.5系と共存することが可能。
最新バージョンは4.8で、このバージョンが最終リリースとなる。
.NET Coreとは?
.NET Frameworkの後継としてリリースされた。オープンソース。
マルチプラットフォームに対応しているため、Widnwosのほか、macOS、Linuxでも動作する。
.Net Coreは3.1でリリースを終了し、名称を.NET 5に変更された。
その後、.NET 6....NET 7...と続いていく。
Unityでは?
Unity 2022.3では、API Compatibility Levelを.NET Frameworkもしくは.NET Standard 2.1から選択できる。
.NET Standard 2.1をサポートしており、これに伴ってC# 8.0を完全にサポートしている。
まとめ
以前は、略称として.NET Frameworkが.NETと呼ばれていました。
その後、.NET Frameworkのメジャーアップデートが終了し、その後継となる.NET Coreが.NETへと改名されました。
.NETが2つの意味合いをもっているためややこしいですが、今後は1つのフレームワークを指すことになるため少しはシンプルになるでしょうか。
参考
.NET Standard
https://learn.microsoft.com/ja-jp/dotnet/standard/net-standard?tabs=net-standard-1-0
.NET Framework 4.8 と .NET 5.0 は全く違う、両者の扱い方の注意点を解説します。
https://wake-mob.jp/2020/11/02/net-framework-4-8-%e3%81%a8-net-5-0-%e3%81%af%e5%85%a8%e3%81%8f%e9%81%95%e3%81%86%e3%80%81%e4%b8%a1%e8%80%85%e3%81%ae%e6%89%b1%e3%81%84%e6%96%b9%e3%81%ae%e6%b3%a8%e6%84%8f%e7%82%b9%e3%82%92%e8%a7%a3/
.NETとは? 初心者にもわかりやすく解説
https://game-creators.jp/g-job-tenshoku/news_articles/23
.NET Framework とは?歴史やできることを解説
https://www.rstone-jp.com/column/109860/