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

.NET Coreのバージョンを戻したい!(Mac)

.NET Core Mac

.NET Core界隈は賑やかにバージョンアップを繰り返し、2016/10/25には 1.1 Preview 1 が登場していますね。

blogs.msdn.microsoft.com

.NET Coreマニアたちは最新バージョンに飛びついて色々試していることでしょう。
しかし、新技術でありPreview状態であったりと色々仕様変更が生じ、関連ライブラリとの整合性が合わなくなっていたりもすると思います。
Project.json廃止からの.csproj化等々、ドラスティックな変更もありますし。

いざ最新版を入れたは良いが「以前のバージョンに戻したい」という欲求にかられる事もあると思います(自分の事(汗))。
私もアンインストールしようと思ったら「あれ!?どうやって戻すの?(ダウングレードしたいよお)」となりまして・・・試行錯誤の結果、これで良いんじゃね?って方法があったので、ここで紹介&間違ってたら誰か正しき道を教えて!という事で・・・

現在の環境は・・・

まず現在の私の環境(Mac)の.NET Coreバージョンは・・・

dotnet --info

f:id:daigo-knowlbo:20161106125844p:plain

うん 1.0.0-preview3-004056 です。
ちなみにこのバージョンで dotnet new しますと、Project.jsonではなくxxx.csprojファイルが作成されます。

f:id:daigo-knowlbo:20161106130045p:plain

.NET Core本体はいずこ・・・

という事で、.NET Core本体はどこに入っているんだろう、と調べると・・・以下にありました。

/usr/local/share/dotnet/sdk

lsすると「1.0.0-preview1-002702 / 1.0.0-preview2-003121 / 1.0.0-preview2-003148 / 1.0.0-preview2.1-003155 / 1.0.0-preview3-004056」と、なんか大漁状態。 f:id:daigo-knowlbo:20161106130437p:plain

バージョン戻したいなーー

私は 1.0.0-preview2-003148 に戻したい! (これは2016/11/6現在、.NET - Powerful Open Source Cross Platform Developmentで提供されているバージョン)
(ちなみに 1.0.0-preview2.1-003155 は.NET Core 1.1のSDKってやつですよね)
新しいの使わないから、無効にしたいバージョンのフォルダを無効な名前にリネーム!・・・するとバージョン戻ります。

sudo mv 1.0.0-preview3-004056 _1.0.0-preview3-004056
sudo mv 1.0.0-preview2.1-003155 _1.0.0-preview2.1-003155

改めて dotnet --info を行なった結果が以下です。

f:id:daigo-knowlbo:20161106132440p:plain

1.0.0-preview2-003148 です!
本当にpreview2に戻ったのかなあ・・・という事で dotnet new してみましょう。

f:id:daigo-knowlbo:20161106132621p:plain

xx.csprojではなくProject.json が作成されました。中身は・・・

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

いつものProject.jsonです。
戻りました!(^◯^)
先ほど変更したフォルダ名を元に戻せば、元どおりになります。

※そのやり方だとだめなんだよ!ということがあればコメント等でご指摘お願い致します!

そもそもDockerイメージ使っておけば良いのかな

そもそも、物理マシンではなく・・・Microsoftが各種Dockerイメージを公開してくれているので、そっちを使っておけばガンガン使い捨てで環境戻せるかな、とも思いました。

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