Movatterモバイル変換


[0]ホーム

URL:


しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

.NET Core のバージョンが難しい

ちょっと前に .NET Core のバージョンがよくわからないという話題が Twitter で上がりました。

何のVersionを表示しているのか?有識者に聞かないと良くわからん。pic.twitter.com/1gqVqpASxP

— Takekazu Omi (@takekazuomi)2017年3月8日

@shibayan 全然わかんない。https://t.co/d9eSBBieMV からダウンロードできるやつ、インストーラー的には 1.1.1 になってるけど実行してみたら 1.0.1 って表示されるし。dotnet --versionしても 1.0.1 だし…

— ++C++; // 管理人: 岩永 (@ufcpp)2017年3月13日

おーみさんとにぃにが分からないのなら、みんなわからないのではという感があるのと、自分も正直よくわからなかったので理解を兼ねて調べました。バージョニング失敗してるとしか思えない。

ダウンロードページでは SDK と Runtime で分かれています。SDK は .NET Core 1.0 と 1.1 を含んでいることが分かるのですが、ダウンロードしたファイルには 1.0.1 とあります。

.NET Core Downloads

f:id:shiba-yan:20170314004228p:plain

Linux 版の .NET Core は 1.0.4 と 1.1.1 でダウンロードリンクは分かれていますが、Ubuntu と RHEL では 10 だったり 1.0.1 だったりと混乱しそうなバージョンになってます。

.NET Core downloads - Linux

f:id:shiba-yan:20170314004358p:plain

流石にこれは混乱するので、いいタイミングだと思ったので調べました。分かったことは我々が .NET Core と呼んでいるものは、実際は 3 つに分かれているということでした。

現時点でのコンポーネントとバージョンを適当に挙げます。

  • .NET Core Shared Framework Host
    • 1.1.0
  • .NET Core SDK
    • 1.0.1
  • .NET Core Runtime
    • 1.0.4 (LTS) / 1.1.1 (Current)

この中で意識しておかないといけないのは、多分 SDK と Runtime のバージョンです。

.NET Core Shared Framework Host は dotnet.exe 自体を指しているようです。この時点で分かりにくい。

f:id:shiba-yan:20170314004546p:plain

そして dotnet にオプションを付けて呼び出すと .NET Command Line Tools が呼び出されるようです。しかし dotnet をオプション無しで実行した時の説明が多分間違っている。

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

.NET Core Shared Framework Host のバージョンと書いてあるのに、実際には 1.0.1 が表示されるので SDK のバージョンを表示しているようです。かなり混乱してきます。

確実な方法は --info を付けて呼び出すことです。詳細な情報が表示されます。

f:id:shiba-yan:20170314004459p:plain

SDK という呼び方が分かりにくさを加速させている感じがしますが、実体は .NET CLI でした。

インストールディレクトリを見ると、ちゃんと host / sdk / shared と分かれています。

f:id:shiba-yan:20170314004737p:plain

SDK の 1.0.0 はどこに行ったのかは、多分疑問に思ってはいけないやつです。

また shared って何だという感じがしてきますが、ここに .NET Core のランタイムが入っています。バージョン番号も見慣れたものですね。

f:id:shiba-yan:20170314004815p:plain

dotnet.exe のオプションに --fx-version というのがあるので 1.0.4 と指定すれば、そのバージョンで実行できるのかもしれないです。しかし殆どの場合は project.json や csproj で指定するので使う場面があるのかは謎。

ちなみに Docker Image はランタイムのバージョンで統一されているので迷うことはないです。

https://hub.docker.com/r/microsoft/dotnet/

.NET Core 1.1.1 が使いたい場合は 1.1.1-runtime / 1.1.1-sdk などのタグを選ぶだけです。

個人的には結局のところ、常に最新版を入れておけば何とかなるだろうという結論に達しました。CoreFX のバージョンを入れるともっとやばいことになるのですが、そういうことはにぃにに任せたいと思いました。

検索
プロフィール
id:shiba-yanid:shiba-yanはてなブログPro
最終更新:

Azure とメイドさんが大好きなフリーランスのプログラマー

follow us in feedly
注目記事

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

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

[8]ページ先頭

©2009-2025 Movatter.jp