.NET
.NET(以前の名前は .NET Core) は Microsoft が提供する C#, Visual Basic, F# のための FOSS ソフトウェアフレームワークです。先行の .NET Framework と異なり、クロスプラットフォームでモジュール化され、近代的なアプリケーションに適した設計が行われています。
目次
- 1 インストール
- 2 テレメトリ
- 3 タブ補完
- 4 トラブルシューティング
- 4.1 対応するフレームワークのバージョンを見つけることができませんでした
- 4.2 "the required library libhostfxr.so could not be found" エラー
- 4.3 Error MSB4019: The imported project "/usr/share/dotnet/sdk/.../Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets" was not found. Confirm that the expression in the Import declaration ... is correct, and that the file exists on disk.
- 4.4 指定された SDK が見つからない
- 4.5 dotnet コマンドがインストールされたままになっている
- 5 参照
インストール
.NET マネージドアプリケーションを実行したいだけの場合は dotnet-runtime パッケージをインストールしてください。
.NET でアプリをビルドする場合は dotnet-sdk パッケージもインストールしてください。
最後に、ASP.NET Core を使用して動的な Web サイト、アプリケーション、およびサービスを構築するには、aspnet-runtimeをインストールします。
Microsoft は Visual Studio Code(同社の Electron ベースの IDE)を使用して .NET アプリを構築・デバッグすることを推奨しています。
.NET 6.0、7.0、8.0 を使用したい場合は、上記パッケージにそれぞれ "-6.0"、"-7.0"、"-8.0" をサフィックスとして付けてください(例:dotnet-runtime-8.0、dotnet-sdk-8.0、aspnet-runtime-8.0)
バージョンの違い
.NET SDK は複数のバージョン体系で公開されています。1xx バージョンの SDK のみがソースからビルド可能で、公式リポジトリで提供されます。それ以外のバージョンが必要な場合は、AUR にある *-bin パッケージを使用する必要があります。
複数バージョンの手動インストール
複数の .NET SDK やランタイムを共存させるには、.NET Foundation が提供する dotnet-install.sh スクリプトを使用します。スクリプトのドキュメントは こちら にあります。
たとえば、以下のコマンドで STS(Standard Term Support)チャンネルの最新版を /usr/share/dotnet にインストールできます:
# ./dotnet-install.sh --install-dir /usr/share/dotnet -channel STS -version latest
インストールをシミュレーションしたい場合は、-Dryrun フラグを使用します。
インストール後、利用可能な SDK を確認できます:
$ dotnet --list-sdks
2.2.108 [/usr/share/dotnet/sdk] 3.0.103 [/usr/share/dotnet/sdk]
$ dotnet --version
3.0.103
手動インストールしたバージョンのアンインストール
dotnet-install.sh でインストールした古いバージョンを削除したい場合があります。.NET Uninstall Tool は現在 Linux をサポートしていないため、手動でアンインストールする必要があります。
$ dotnet --list-sdks
5.0.100 [/usr/share/dotnet/sdk] 5.0.102 [/usr/share/dotnet/sdk]
SDK の削除:
$ SDK_VERSION="5.0.100" $ DOTNET_UNINSTALL_PATH="/usr/share/dotnet" # rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
dotnet-install.sh を使用した場合、dotnet ホストや shared パッケージもインストールされているため、リリースに応じてこれらも追加で削除する必要があります。
.NET バージョン全体(sdk、host、shared)の完全な削除:
$ SDK_VERSION="5.0.100" $ DOTNET_VERSION="5.0.0" $ DOTNET_UNINSTALL_PATH="/usr/share/dotnet" # rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$DOTNET_VERSION # rm -rf $DOTNET_UNINSTALL_PATH/host/fxr/$DOTNET_VERSION
AUR による複数バージョンのインストール
AUR にある一部の dotnet パッケージは共存できるように設計されています。コマンドラインツールを含むホストパッケージ(dotnet-host-binAUR または dotnet-host)が 1 つ必要で、あとは任意の SDK やランタイム(各メジャーバージョンの最新版)を追加でインストールできます。以下は互換性のあるパッケージ一覧です:
- dotnet-host-binAUR, dotnet-runtime-binAUR, aspnet-runtime-binAUR, dotnet-sdk-binAUR
- dotnet-host-preview-binAUR, dotnet-runtime-preview-binAUR, aspnet-runtime-preview-binAUR, dotnet-sdk-preview-binAUR
- dotnet-runtime-8.0-binAUR, aspnet-runtime-8.0-binAUR, dotnet-sdk-8.0-binAUR
- dotnet-runtime-7.0-binAUR, aspnet-runtime-7.0-binAUR, dotnet-sdk-7.0-binAUR
- dotnet-runtime-3.0AUR, aspnet-runtime-3.0AUR, dotnet-sdk-3.0AUR
- dotnet-runtime-2.2AUR, aspnet-runtime-2.2AUR, dotnet-sdk-2.2AUR, dotnet-sdk-2.2-vs2017AUR
- dotnet-runtime-2.1AUR, aspnet-runtime-2.1AUR, dotnet-sdk-2.1AUR
PowerShell Core のインストール
PowerShell Core は "グローバル" ツールとしてもインストールできます: [1] [2]()
テレメトリ
テレメトリはデフォルトで有効になっていますが、環境変数の設定により無効にできます。DOTNET_CLI_TELEMETRY_OPTOUT=1
タブ補完
System.CommandLine.Parser を使用して引数を解析するすべての dotnet プログラムはオートコンプリートをサポートしています。これを有効にするには、それぞれのドキュメントに記載されているように、.bashrc / .zshrc ファイルに数行追加するだけです。スタンドアロン・バイナリについては、 こちらで説明されています。
トラブルシューティング
対応するフレームワークのバージョンを見つけることができませんでした
新しく作成したプロジェクトを実行しようとしたとき、次のエラーが発生した場合、GitHub のさまざまな問題の解決策に記載されているように、DOTNET_ROOT 変数を設定する必要がなくなりました。Arch の dotnet パッケージは(3.1現在)、Microsoft が推奨する /usr/share/dotnet にインストールされます。
$ dotnet run
It was not possible to find any compatible framework version The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found. - No frameworks were found. You can resolve the problem by installing the specified framework and/or SDK. The specified framework can be found at: - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=arch-x64
これは、Arch ではランタイムが別パッケージとして出荷されているために起こるものです。aspnet-runtime パッケージがインストールされていることを確認する必要があります。
"the required library libhostfxr.so could not be found" エラー
一部の dotnet SDK ツール(例えば、libman, dotnet-watch など)では、環境変数 DOTNET_ROOT が事前に設定されていることを期待している場合があります。そうでない場合、このようなエラーが発生する可能性があります。[3]
A fatal error occurred, the required library libhostfxr.so could not be found. If this is a self-contained application, that library should exist in [/home/my_user/.dotnet/tools/.store/microsoft.web.librarymanager.cli/1.0.172/microsoft.web.librarymanager.cli/1.0.172/tools/netcoreapp2.1/any/]. If this is a framework-dependent application, install the runtime in the default location [/usr/share/dotnet] or use the DOTNET_ROOT environment variable to specify the runtime location.
回避策としては、手動でシェルに DOTNET_ROOT をエクスポートします。
~/.bashrc
export DOTNET_ROOT=/opt/dotnet
これはアップデート後に発生します。現在実行中のシェル/ログインセッションは、インストールされているものとは異なる dotnet SDK バージョンの環境変数が納められています。シェルを再起動するか、再度ログインすると直ります。
指定された SDK が見つからない
これは Mono と MSBuild SDK ライブラリと dotnet のライブラリが競合していることが原因だと思われます。これを修正するには、シェルでパスを手動で export します(必要に応じてバージョン番号を置き換えてください)。
~/.bashrc
export MSBuildSDKsPath=$( echo /usr/share/dotnet/sdk/3.*/Sdks );
dotnet コマンドがインストールされたままになっている
インストールされたパッケージは dotnet-host をアンインストールしないので、dotnet-host をアンインストールしてください。