困ったこと
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]
解決見つけた
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の中身はこんな。
{
"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