概要
先日、.NET 5 がリリースされましたので、Gitpodで使えるように調整してみました。
忘れないうちにメモメモ。
補足:2021-03-16 現在、最新の gitpod/workspace-dotnet では、.NET 5 がインストールされています。なので、以下の手順はもう必要ありません。
.NET 5.0 リリースに関しては、以下のメモもよかったら参照ください。
.gitpod.Dockerfile
の調整
現状(2020-11-27現在)で、Gitpod 側が用意してくれている dotnet 向けの docker image は以下。
.NET Core 3.1 をインストールするようになっているので、このイメージをベースにして .NET 5.0 を入れるようにします。
以下のような感じで .gitpod.Dockerfile
を用意
FROM gitpod/workspace-dotnet RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ && sudo dpkg -i packages-microsoft-prod.deb RUN sudo apt-get update \ && sudo apt-get install -y apt-transport-https \ && sudo apt-get update \ && sudo apt-get install -y dotnet-sdk-5.0 \ && sudo rm -rf /var/lib/apt/lists/* # installed the dotnet packages from apt command, so clear the DOTNET_ROOT environment variable. ENV DOTNET_ROOT=
Gitpod の ワークスペース で利用するOSは現在 Ubuntu 20.04 になっているので、
$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu Focal Fossa (development branch)" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
インストール方法は以下を見て調整しました。
注意点として、gitpod/workspace-dotnet
内で、dotnet のインストール先をデフォルトから変更しているので内部で DOTNET_ROOT
環境変数を設定しています。今回は、apt でパッケージインストールしているので、この環境変数をクリアします。そうしないと、dotnet run
とかした時に内部で見に行くツールチェインの向きがDOTNET_ROOT
の方を見てしまうので .NET 5.0 コンパチのプログラム書くとエラーになります。
以下の部分で環境変数をクリアしています。
# installed the dotnet packages from apt command, so clear the DOTNET_ROOT environment variable. ENV DOTNET_ROOT=
.gitpod.yml
の調整
後は、.gitpod.yml
にて上記の dockerfile を利用するよう調整して終わりです。
image: file: .gitpod.Dockerfile tasks: - init: dotnet restore command: dotnet clean && dotnet build vscode: extensions: - ms-vscode.csharp@1.21.12:kw8SkO8+aVTSFug281WfQQ==
これでオケ。
ちゃんと入っているか確認。
$ dotnet --list-sdks 5.0.100 [/usr/share/dotnet/sdk] $ dotnet --info .NET SDK (reflecting any global.json): Version: 5.0.100 Commit: 5044b93829 Runtime Environment: OS Name: ubuntu OS Version: 20.04 OS Platform: Linux RID: ubuntu.20.04-x64 Base Path: /usr/share/dotnet/sdk/5.0.100/ Host (useful for support): Version: 5.0.0 Commit: cf258a14b7 .NET SDKs installed: 5.0.100 [/usr/share/dotnet/sdk] .NET runtimes installed: Microsoft.AspNetCore.App 5.0.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 5.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App] To install additional .NET runtimes or SDKs: https://aka.ms/dotnet-download
以下にサンプルリポジトリつくってあるので、よければご参照ください。
C# 9.0
の構文を使うとエディタで赤い波線が表示される
環境は上記で出来るのですが、Gitpod 上で利用する VSCode の C# 拡張機能 のバージョンが古い AND mono に付属している msbuild のバージョンが古いみたいで、コンパイル自体は出来るけど赤い破線は現状消えない状態です。
この件については、以下のように記載がありました。
Note about using .NET 5 SDKs
The .NET 5 SDK requires version 16.8 of MSBuild.
For Windows users who have Visual Studio installed, this means you will need to be on the latest Visual Studio 16.8 Preview. For MacOS and Linux users who have Mono installed, this means you will need to set omnisharp.useGlobalMono to never until a version of Mono ships with MSBuild 16.8.
gitpod 上で msbuild のバージョンを見てみると
$ msbuild -version msbuild -version Microsoft (R) Build Engine version 16.6.0 for Mono Copyright (C) Microsoft Corporation. All rights reserved. 16.6.0.32601
なので、ちょっとバージョンが足りていない状態ですね。まあ試すだけなので個人的には問題なしです。
参考情報
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場