6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dotnetコマンドで利用するSDKバージョンを切り替える

Last updated at Posted at 2020-08-21

困ったこと

IdentityServer4の勉強でつまづいた。
.Net Core SDKの2.1系と3.1系が入っている状態で下記を叩いたら.NET Core SDK 3.1のもので作られた。

> cd project-dir
> dotnet new -i IdentityServer4.Templates
> dotnet new is4ui

そもそもコンピューター内には2つのSDKを入れてたので、最新が使われるらしい。
だからIdentityServer4.Templates も3.1系の認識でインストールしちゃった模様。

> dotnet --list-sdks
2.1.808 [C:\Program Files\dotnet\sdk]
3.1.302 [C:\Program Files\dotnet\sdk]

解決見つけた

使用する .NET Core のバージョンを選択する

dotnetコマンドを実行するパスより上部にglobal.jsonを置いて、
SDKバージョンを明示すればいいらしい。

ということで、ソリューションファイルと同じディレクトリに作ることにした。
dotnet new globaljsonでバージョンを指定するとglobal.jsonを作ってくれる。
バージョンは全部一致させないとダメみたい。
(2.1.*みたいな指定はできないっぽい)

> cd solution-dir
> dotnet new globaljson --sdk-version 2.1.808
The template "global.json file" was created successfully.

できたglobal.jsonの中身はこんな。

global.json
{
  "sdk": {
    "version": "2.1.808"
  }
}

置く前は

> cd solution-dir\project-dir
> dotnet --version
3.1.302

置いた後は

> cd solution-dir\project-dir
> dotnet --version
2.1.808

入れなおす

入れてたIdentityServer4.Templatesのバージョンが4.0.1で.NetCore3系だった。
3.1.2までが2.1系で動作するもののようなので、入れなおしてis4uiを叩く。

まず、.NetCore3系で入れちゃってるので、global.jsonが有効でない場所で実行する。

> cd :c\
> dotnet new -u IdentityServer4.Templates

次に、IdentityServer4.Templates 3.1.2のインストールと、
プロジェクト内にis4uiを入れなおす。

> cd project-dir
> dotnet new -i IdentityServer4.Templates::3.1.2
> dotnet new is4ui

備忘録

dotnet new -iでインストールされたパッケージは下記にある。
%USERPROFILE%.templateengine\dotnetcli\SDKバージョン\packages

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?