LoginSignup
13
11

More than 3 years have passed since last update.

dotnet-install スクリプト、使ってます?

Posted at

はじめに

 この記事はC# Advent Calendar 2019の22日目の記事となります。
 C#というより.NET Coreの話となりそうですが……。

dotnet-install スクリプト、使っていますか?

 皆さんは.NET Core SDKをどのようにインストールしていますか?
 Microsoftのダウンロードページからインストーラーをダウンロードして実行しますか?
 Visual Studio Installerからインストールしていますか?
 管理者権限のない方はzipで適当な場所に配置しますか?
 Windows以外の方はどうですか?
 macOSでもインストーラーを使っていますか?
 Linuxではパッケージマネージャー?

 dotnet-install スクリプトという選択肢、そもそも知っていましたか?

前提条件

 以降の内容は以下の環境で行われています。

  • CentOS 7.6.1810

dotnet-install スクリプトとは

 dotnet-install スクリプトは.NET Core CLI ツールと共有ランタイムをインストールするために使うスクリプトです。詳細についてはMicrosoft Docsを参照ください。
 ただ、「詳細は別ページで確認して下さい」だけでは本記事がここで終わってしまうので、まずは「これがわかれば使える」という使い方を紹介いたします。

dotnet-install スクリプトのダウンロード

 dotnet-install スクリプトは環境に合わせて2種類用意されています。ご自身の環境に合わせてダウンロードしてください。

dotnet SDKのインストール

最新のSDKをインストールしたい

 ためしに、現在の最新のSDKをインストールしてみましょう。--versionlatestを指定することで最新のSDKをダウンロードします。--install-dirではdotnet CLIのパスを通したい場所を指定してください。

$ sh dotnet-install.sh --version latest --install-dir /path/to/cli
$ cd /path/to/cli
$ dotnet --version
3.1.100

 実行後は下記のような構造になります。

/path/to/cli
 |-- LICENSE.txt
 |-- ThirdPartyNotices.txt
 |-- dotnet
 |-- host
 |-- packs
 |-- sdk
 |   `-- 3.1.100
 |-- shared
 `-- templates

 この/path/to/cli/sdkの中に指定したバージョンのSDKが追加されていきます。ですので、基本的に--install-dirの指定はバージョン指定ごとに変える必要はありません。

LTSのみ対象としてインストールしたい

 --versionlatestと指定することで最新のSDKをインストールしましたが、場合によってはLTSのみをインストール対象としたいというケースもありえるかと思います。そのような場合は--channelLTSと指定しましょう。

$ sh dotnet-install.sh --channel LTS --install-dir /path/to/cli

 こちらの--channelではブランチ名やX.Y(たとえば 2.23.0)といった指定も可能です。「.NET Coreの2.2系をインストールしたいけど2.2系の詳細なバージョン覚えてないや」といった場合も安心ですね。

インストール済みのSDKバージョンを把握したい

 当然、インストールしてあるSDKのバージョンを知りたいときもありますよね。--install-dirで指定したパスのsdkの中身を見ても判断できますが、こちらはdotnet CLIの標準のオプションで確認できます。

$ dotnet --list-sdks
2.2.402 [/path/to/cli/sdk]
3.0.100 [/path/to/cli/sdk]
3.1.100 [/path/to/cli/sdk]

実行したいだけだからSDKじゃなくてruntimeをインストールしたい

 「.NET Coreで作ったプログラムを動かしたいだけだから実行環境だけあればいい」なんてこともありますよね。その場合は--runtimeを指定しましょう。

実行環境だけあればいい場合
$ sh dotnet-install.sh --channel LTS --install-dir /path/to/cli --runtime dotnet

 「ASP.NET CoreでWebアプリを動かしたいだけだからSDKをインストールするのは無駄」なんて場合はaspnetcoreと指定しましょう。

Webアプリが動けばいい場合
$ sh dotnet-install.sh --channel LTS --install-dir /path/to/cli --runtime aspnetcore

まとめ

 PythonやNode.js、Goといった言語ではpyenvやgoenvといった容易な環境構築とバージョン管理を行えるツールがあります。
 ターゲットフレームワークという仕組みがある.NETでも、dotnet-install スクリプトによって容易に環境構築を行えることがお分かりいただけたかと思います。
 もちろん「私はインストーラー派なんだ」という方を否定するわけではありませんが、環境構築の一手段としてこのようなツールが存在するということを知っていただければと……。
 C#のコード一文字も書いてないけど許してください。

13
11
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
13
11