備忘録的な意味で書き残しておきます。
(1) C#言語バージョンと各ランタイムの関係性
.NET Framwework と .NET Core がどのC#の言語バージョンにあたるのかの対応表。
C# | .NET Framework | .NET Core | VisualStudio |
---|---|---|---|
1.0 | 1.0 | no | 2002 |
1.2 | 1.1 | no | 2003 |
2.0 | 2.0 | no | 2005 |
3.0 | 2.0 | no | 2005 |
3.5 | 3.0 | no | 2008, 2010 |
4.0 | 4.0 | no | 2012 |
5.0 | 4.5~4.5.2 | 1 | 2013 |
6.0 | 4.6~4.6.2 | 1.1 | 2015 |
7.0 | 4.7~4.7.2 | 1 | 2017 |
7.1 | 4.7~4.7.2 | 2.0 | 2017 |
7.2 | 4.7~4.7.2 | 2.1 | 2017 |
7.3 | 4.8 | 2.2 | 2017 |
8.0 | no | 3.0, 3.1 | 2019 |
- サポート期間
- 1.0, 1.1 はもう言語サポートが完全に終了している。
- VisualStuidoも2020年7月で2010までサポートが切れている
VisualStudioは2013以降開発者キットを別途導入すればどの.NETのバージョンの開発が可能になっていが、より新しいC#の構文にエディタが対応していないのでシンタックスエラー扱いされる。
(2) .NET Standardとランラムの関係性
.NET Framwework と .NET Core がどの .NET Standard に当てはまるかの対応表。そのランタイムの標準ライブラリに API がどの標準に準拠しているかです。ライブラリを作成する際に強く意識しないと他方で使えないライブラリになってしまう可能性があるのでよく注意したほうがいいです。
.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 Standardへの準拠バージョンが存在するので注意
備考
選ぶときに考慮すること。
- .NET Frameworkは4.8で終了。
- C# 8.0未対応のままになる
- .NET Standard 2.1未準拠、2.0相当で終了
- サポートは継続するが今後新機能の追加は行われなくなるので C#8.0が来ると思わないこと。
- .NET 3.1はLTSの対象、2年間の長期サポートあり
- 今後出てくる .NET 5はLTS対象ではない
- .NET 6.0がLTSの対象
なので、
Windows 固有機能が必要でも.NET Core3.1 + Nuget(WCF/Remoting/WindowsServiceなどなど)で解決できないか調査するべき。.NET Frmaework4.8を選ぶと後で泣きを見ると思われる。
言語自体は堅調にバージョンアップしているが周辺ライブラリの開発速度が.NET4.x 時代と違う速い速度で流れているのでゆっくりしているとあっという間にレガシー化の流れがある。
.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