読者です 読者をやめる 読者になる 読者になる

.NET Core のバージョニングが分かりにくいので調べた

.NET Coreのバージョニング分かりにくい

一生懸命調べました。

分かりにくさよこんにちは

この記事を書いている時点で、.NET Coreの最新版としてRuntime 1.1.1がダウンロード可能です。

.NET Core Downloads

インストーラにも1.1.1と記されています。

f:id:mrgchr:20170324232615p:plain f:id:mrgchr:20170324232640p:plain

で、インストール後にコマンドラインにて、"dotnet"と打ち込むと、

> dotnet

Microsoft .NET Core Shared Framework Host

  Version  : 1.1.0
  Build    : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

Usage: dotnet [common-options] [[options] path-to-application]

Common Options:
  --help                           Display .NET Core Shared Framework Host help.
  --version                        Display .NET Core Shared Framework Host version.

Options:
  --fx-version <version>           Version of the installed Shared Framework to use to run the application.
  --additionalprobingpath <path>   Path containing probing policy and assemblies to probe for.

Path to Application:
  The path to a .NET Core managed application, dll or exe file to execute.

If you are debugging the Shared Framework Host, set 'COREHOST_TRACE' to '1' in your environment.

Use dotnet --help to get help with the SDK

> dotnet --version

Microsoft .NET Core Shared Framework Host

  Version  : 1.1.0
  Build    : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

Usage: dotnet [common-options] [[options] path-to-application]

...

>

Version:1.1.0 と表示されます。これは、".NET Core Shared Framework Host"のバージョン情報であり、Runtimeのバージョン情報ではありません。ここが混乱するポイントの一つでしょう。

ではインストールされているRuntimeのバージョンはどのように確認できるのかというと、
“C:\Program Files\dotnet\shared\Microsoft.NETCore.App”*1
以下にあるフォルダの名前がそれぞれ、Runtimeのバージョンになっているようです。 *2

f:id:mrgchr:20170324233159p:plain

f:id:mrgchr:20170324233003p:plain

SDKをインストールするともっと分かりにくくなる

それだけであれば良いのですが、SDKをインストールするともっと混乱することになります。

.NET Core Downloads

現時点でダウンロードできるSDKはバージョン1.0.1なのですが、SDKインストーラのファイル名は"dotnet-1.1.1-sdk-…“とRuntimeのバージョンが記されており、SDKのバージョンは記されておりません。

f:id:mrgchr:20170324233633p:plain

f:id:mrgchr:20170324233730p:plain

そして、インストール後にコマンドラインから"dotnet"と打つと、

> dotnet

Microsoft .NET Core Shared Framework Host

  Version  : 1.1.0
  Build    : 928f77c4bc3f49d892459992fb6e1d5542cb5e86

Usage: dotnet [common-options] [[options] path-to-application]

Common Options:
  --help                           Display .NET Core Shared Framework Host help.
  --version                        Display .NET Core Shared Framework Host version.

Options:
  --fx-version <version>           Version of the installed Shared Framework to use to run the application.
  --additionalprobingpath <path>   Path containing probing policy and assemblies to probe for.

Path to Application:
  The path to a .NET Core managed application, dll or exe file to execute.

If you are debugging the Shared Framework Host, set 'COREHOST_TRACE' to '1' in your environment.

To get started on developing applications for .NET Core, install the SDK from:
  http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

>

と、やはり .NET Core Shared Framework Hostのバージョンが表示されます。

そして混乱するのはここからで、さらに"dotnet –version"と打つと、

> dotnet --version
1.0.1

>

と、SDKインストール前と異なる情報が表示されます。
“–version Display .NET Core Shared Framework Host version."とは何だったのか。

また、この"1.0.1"はSDKのバージョン情報ではなくて、"CLI(CommandLine Interface) Tool"のバージョン情報らしいです。
ここもまた大きく混乱する箇所だと思います。

じゃあ、インストールされているSDKのバージョン情報はどこを見るのか、というと、
“C:\Program Files\dotnet\sdk*3
以下にあるフォルダのフォルダ名を確認することになるようです。

f:id:mrgchr:20170324234400p:plain

f:id:mrgchr:20170324234406p:plain

この辺りも混乱する原因になっていると思われます。

混乱しているのは私たちだけじゃない

まとめると、

Runtimeのバージョン ≠ Shared Framework Hostのバージョン ≠ SDKのバージョン ≠(≒?) CLI Toolのバージョン

と言ったところでしょうか。
それぞれ微妙に似ているバージョンなのも混乱の元でしょうね。

で、これらが分かりにくいと思っている人は他にもいるようで、Github上にIssueも上がっています。

github.com

去年の半ばには報告されていた割りに全然改善されていなかったのですが、最近また取り上げられているようです。

次こそ分かりやすくなると良いのですが。

*1:デフォルトのインストールフォルダの場合

*2:スクショはSDKをインストールした後のもので、1.0.4が入っています

*3:これもデフォルトのインストールフォルダの場合