ぷろじぇくと、みすじら。

.NETのバージョンまとめメモ

Created at:

.NET Coreとそれにまつわるバージョンはいろいろあって、多分数字が大きい方が正しいのであろうと思いつつも1.1と1.0が並行していた時期があったりとどっちを使えば…と若干混乱したことがあったので整理してみようかと。.NET Standardというものもあって頭が爆発しそうですし。

なお.NET Standardに関して詳しくは.NET Standardのページと、藤原さんの.NET Standard のおさらいがおすすめです。

バージョン一覧

2017年6月9日現在の最新の.NET Core/.NET/ASP.NET Core/ASP.NET MVC Coreのバージョンとそれに対応する.NET Standardバージョンの一覧です。




























































































Product Release Name Latest .NET Standard
.NET Core
(netcoreapp)
LTS .NET Core 1.0 1.0.5 (SDK 1.0.4) 1.6
Current .NET Core 1.1 1.1.2
Preview .NET Core 2.0 2.0-preview (VS2017.3) 2.0
ASP.NET Core LTS ASP.NET Core 1.0 1.0.4 n/a
Current ASP.NET Core 1.1
(.NET Core 1.1, .NET 4.6)
1.1.2
Preview ASP.NET Core 2.0
(.NET Core 2.0, .NET Standard 2.0予定)
2.0-preview
ASP.NET MVC Core LTS ASP.NET Core 1.0 1.0.3 n/a
Current ASP.NET MVC Core 1.1 1.1.3
Preview ASP.NET MVC Core 2.0 2.0.0-preview
.NET Framework - .NET Framework 4.5 4.5.2 1.2
- .NET Framework 4.6 4.6.2 1.5(w/Tooling 1.0 or 2.0), 1.6(w/Tooling 2.0), 2.0
Current .NET Framework 4.7 4.7 1.5, 1.6, 2.0

ASP.NET Core/ASP.NET MVC Coreはランタイムではないので.NET Standardには関係ありません。

インストールするときに微妙に混乱することのあった点として.NET Core SDKバージョンやToolingといったものがあるということでしょうか。特にSDKバージョンは.NET Coreのバージョンと一致していないのでわかりにくいです。

.NETとASP.NET Coreのバージョン選択

.NET Coreは最新版を素直に使えば良いので1.1シリーズでよいでしょう。

.NET Frameworkは4.7が最新なのですがSystem.ValueTupleがコアライブラリ入りしたおかげで、.NET Standardなライブラリ側でSystem.ValueTupleパッケージのNuGet参照があると参照が混乱して無事死亡というひどい問題があるので4.7を選ぶときには気を付けましょう。

ASP.NET Core/ASP.NET MVC Coreは最新で良さそうです。

.NET Standardの選択

.NET Coreをターゲットにする分に関してはまあ1.0-1.6どれでもという感じです。

.NET Frameworkがややこしく.NET Framework 4.6で.NET Standardは1.6にするにはTooling 2.0である必要がある、ということです。そもそもTooling 1.0/2.0とはという話になって訳が分からないので1.5以下を選ぶのが無難そうです。

なお.NET Standard 1.5は.NET Framework 4.6.2以降なので気を付けないと.NET Framework 4.6がターゲットにならないものになります。1.4でも4.6.1ですけど…。ややこしい。

そういった点を鑑みると以下のような感じで選ぶのがよさそうかなと思いました。

もちろん使いたいものによって選択するものは変わってくると思います。古いランタイムをターゲットにしている場合にはPCLやShared Projectで#ifの方が良かったりするかもしれません(Unityとか)。

まとめ

.NET Standard 2.0はよ。