C#のバージョンと.NET Framework, .NET Coreの対応表

備忘録的な意味で書き残しておきます。

(1) C#言語バージョンと各ランタイムの関係性

.NET Framwework と .NET Core がどのC#の言語バージョンにあたるのかの対応表。

C# .NET Framework .NET Core VisualStudio
1.0 1.0 - 2002
1.2 1.1 - 2003
2.0 2.0 - 2005
3.0 2.0 - 2005
3.5 3.0 - 2008
4.0 4.0 - 2012
5.0 4.5~4.5.2 - 2013
6.0 4.6~4.6.2 .NET Core 1.0 2015
7.0 4.7~4.7.2 .NET Core 2.0 2017
7.1 4.7~4.7.2 .NET Core 2.0 2017
7.2 4.7~4.7.2 .NET Core 2.1 2017
7.3 4.8~4.8.1 .NET Core 2.2 2017
8.0 対応無し .NET Core 3.0, 3.1 2019
9.0 対応無し .NET 5 2019
10.0 対応無し .NET 6 2022
11.0 対応無し .NET 7 2022
12.0 対応無し .NET 8 2022
13.0 対応無し .NET 9 2022

VisualStudioは2013以降開発者キットを別途導入すればどの.NETのバージョンの開発が可能になっている。過去バージョンは使用できる。より新しいC#の構文にエディタが対応していないのでシンタックスエラー扱いされる。

各IDEのサポート期限

(2) .NET Standardとランラムの関係性

.NET Framwework と .NET Core がどの .NET Standard に当てはまるかの対応表。そのランタイムの標準ライブラリに API がどの標準に準拠しているかを表します。.NET 5以降は .NET Standard は廃止されたのでそれまでの対応関係を表します。

.NET Standard .NET Framework .NET Core
1.0 4.5 1
1.1 4.5 1
1.2 4.5.1 1
1.3 4.6 1
1.4 4.6.1 1
1.5 4.6.1(4.7.2以降推奨) 1
1.6 4.6.1(4.7.2以降推奨) 1
2.0 4.6.1(4.7.2以降推奨) 2.0
2.1 no 3.0

C# の言語バージョンとかは関係ない。

備考

選ぶときに考慮すること。

  • .NET Frameworkは4.8系で終了
    • C# 8.0 より新しい言語バージョンは利用できない
    • .NET Standard 2.1未準拠、2.0相当のまま終わり
      • サポートは継続するが今後新機能の追加は行われなくなるとのことなので C#9.0 が来ることは無い

.NET Framework と .NET Core / .NET 系との差がどんどん開いている。

なので、

  • Windows 固有機能が必要でも.NET Core3.1 + Nuget(WCF/Remoting/WindowsServiceなどなど)で解決できないか調査するべき。.NET Frmaework4.8を選ぶと後で泣きを見ると思われる。

  • 言語自体は堅調にバージョンアップしているが周辺ライブラリの開発速度が.NET Framework 時代と違い高速(そして .NET のサポートが容赦なくサポート終了して新しいのが出る)ため最初から更新を計画しておかないと開発中にサポート終了まである。

  • .NET Core3.1 で C++/CLI 対応されたので .NET Framework から乗り換えるなら .NET Core3.1 より後のバージョンは安心

  • Windows Forms でポトペタしたい場合2020年9月時点では様子見が正解。フォームエディタが挙動がおかしい。慌てて.NET Coreにするメリット無い。どうせ時間が止まってるようなものだからレガシーでメンテしても大して変わらない。IDEが良くなればその時乗り換え検討しても良いくらい。

  • VisualStudio2019は16.7でやっと安定化。XAMLエディタが落ちたりするのがやっと収まったっぽい。.NET Core3.1使えるし乗り換え推奨。2012みたいな地雷ではない。次は2021?出たとしても安定して使えるようになるまであと1年半くらいある。

  • VisualStudio2019 + .NET Core3.1 + C#8.0 で .NET 5が準備できる人はそうするべき

参考資料

C#の言語バージョンと.NETバージョン https://ufcpp.net/study/csharp/cheatsheet/listfxlangversion/

.NET Standard https://docs.microsoft.com/ja-jp/dotnet/standard/net-standard

C# の歴史 https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-version-history

一目で分かる、Visual Studioの各バージョンのサポート期限 https://www.atmarkit.co.jp/ait/articles/1609/02/news033.html