概要
先日、.NET 5 がリリースされましたので、Gitpodで使えるように調整してみました。
忘れないうちにメモメモ。
補足:2021-03-16 現在、最新の gitpod/workspace-dotnet では、.NET 5 がインストールされています。なので、以下の手順はもう必要ありません。
.NET 5.0 リリースに関しては、以下のメモもよかったら参照ください。
devlights.hatenablog.com
.gitpod.Dockerfile の調整
現状(2020-11-27現在)で、Gitpod 側が用意してくれている dotnet 向けの docker image は以下。
github.com
.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/*
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
インストール方法は以下を見て調整しました。
docs.microsoft.com
注意点として、gitpod/workspace-dotnet 内で、dotnet のインストール先をデフォルトから変更しているので内部で DOTNET_ROOT 環境変数を設定しています。今回は、apt でパッケージインストールしているので、この環境変数をクリアします。そうしないと、dotnet run とかした時に内部で見に行くツールチェインの向きがDOTNET_ROOT の方を見てしまうので .NET 5.0 コンパチのプログラム書くとエラーになります。
以下の部分で環境変数をクリアしています。
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
以下にサンプルリポジトリつくってあるので、よければご参照ください。
github.com
C# 9.0 の構文を使うとエディタで赤い波線が表示される
環境は上記で出来るのですが、Gitpod 上で利用する VSCode の C# 拡張機能 のバージョンが古い AND mono に付属している msbuild のバージョンが古いみたいで、コンパイル自体は出来るけど赤い破線は現状消えない状態です。
この件については、以下のように記載がありました。
marketplace.visualstudio.com
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
なので、ちょっとバージョンが足りていない状態ですね。まあ試すだけなので個人的には問題なしです。
参考情報
docs.microsoft.com
docs.microsoft.com
github.com
stackoverflow.com
marketplace.visualstudio.com
docs.microsoft.com
docs.microsoft.com
過去の記事については、以下のページからご参照下さい。
devlights.github.io
サンプルコードは、以下の場所で公開しています。
github.com
github.com
github.com