「インストール - .NET SDK」の版間の差分
385行目: | 385行目: | ||
== C#プロジェクトにおけるターゲッットフレームワークの変更 == | == C#プロジェクトにおけるターゲッットフレームワークの変更 == | ||
C# | C#プロジェクトのターゲットフレームワークを1つ設定するには、プロジェクトファイル(.csproj)を開いて、<code>TargetFramework</code>エレメントを変更する。<br> | ||
<br> | <br> | ||
以下の例では、ターゲットを.NET 5に変更している。<br> | 以下の例では、ターゲットを.NET 5に変更している。<br> | ||
399行目: | 399行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
複数のターゲットを指定する場合、<code>TargetFrameworks</code>エレメントを使用して、セミコロン(<code>;</code>)で囲む必要がある。<br> | |||
以下の例では、ターゲットを.NET Core 3.1、.NET 5、.NET 6に変更している。<br> | 以下の例では、ターゲットを.NET Core 3.1、.NET 5、.NET 6に変更している。<br> | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
407行目: | 407行目: | ||
<PropertyGroup> | <PropertyGroup> | ||
<OutputType>Exe</OutputType> | <OutputType>Exe</OutputType> | ||
< | <TargetFrameworks>netcoreapp3.1;net5.0;6.0</TargetFrameworks> | ||
</PropertyGroup> | </PropertyGroup> | ||
</Project> | </Project> |
2021年12月25日 (土) 11:02時点における版
.NETをインストールする前に
.NETをインストールする前に、テレメトリ機能を無効にする。
vi ~/.profile
# ~/.profileファイル export DOTNET_CLI_TELEMETRY_OPTOUT=1 # または export DOTNET_CLI_TELEMETRY_OPTOUT=true
オプトアウトとは、個人情報の第三者提供に関し、個人データの第三者への提供を本人の求めに応じて停止することである。
依存関係のライブラリのインストール
パッケージ管理システムからインストール
パッケージ管理システムを使用してインストールする場合、以下のライブラリが自動的にインストールされる。
libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5
※注意
.NET Core 2.1より以前のバージョンには、以下の依存関係のライブラリもインストールする必要がある。
- libunwind
- libuuid
手動でインストール
手動で.NETをインストールする場合および自己完結型ソフトウェアを公開する場合は、以下の依存関係のライブラリをインストールする。
# SUSE sudo zypper install libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 または sudo zypper install lttng-ust libcurl zlib libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 # PinePhone (Mobian) sudo apt install libicu67 openssl libssl1.1
※注意
.NET Core 2.1より以前のバージョンには、以下の依存関係のライブラリもインストールする必要がある。
- libunwind
- libuuid
リポジトリの登録
パッケージ管理システムからインストール
.NET SDKをインストールする前に、以下のコマンドを入力して、Microsoftリポジトリキーを登録する。
# openSUSE sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc wget https://packages.microsoft.com/config/opensuse/15/prod.repo sudo mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo sudo chown root:root /etc/zypp/repos.d/microsoft-prod.repo # SLE sudo rpm -Uvh https://packages.microsoft.com/config/sles/15/packages-microsoft-prod.rpm sudo ln -s /etc/yum.repos.d/microsoft-prod.repo /etc/zypp/repos.d/microsoft-prod.repo
SUSEを最新の状態にするため、以下のコマンドを入力する。
sudo zypper update
手動でインストール
リポジトリの登録は不要である。
.NET 5 SDKのインストール
.NET SDKを使用すると、.NETを使用したソフトウェアが開発できる。
.NET SDK をインストールする場合は、対応するランタイムをインストールする必要はない。
パッケージ管理システムからインストール
.NET 5 SDKをインストールするには、以下のコマンドを実行する。
sudo zypper install dotnet-sdk-5.0
手動でインストール
まず、Microsoftの公式Webサイトにアクセスして、.Net 5 SDKをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf dotnet-sdk-<バージョン名>-linux-x64.tar.gz mv dotnet-sdk-<バージョン名>-linux-x64 ~/InstallSoftware/Net_5_SDK
次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。
vi ~/.profile
# ~/.profileファイル PATH="$HOME/InstallSoftware/Net_5_SDK:$PATH"
.NET 5 ランタイムのインストール
パッケージ管理システムからインストール
ASP.NET Core 5 ランタイムを使用すると、ランタイムを提供しない.NETを使用して開発されたソフトウェアが実行できる。
.NETの最も互換性の高いランタイムであるASP.NET Core ランタイムがインストールには、以下のコマンドを実行する。
sudo zypper install aspnetcore-runtime-5.0
ASP.NET Core 5 ランタイムの代替手段として、ASP.NET Core 5を含まない.NET 5 ランタイムをインストールするには、以下のコマンドを実行する。
sudo zypper install dotnet-runtime-5.0
手動でインストール
Microsoftの公式Webサイトにアクセスして、.NET 5 ランタイムをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries NET_5_Runtime mv NET_5_Runtime ~/InstallSoftware
次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。
vi ~/.profile
# ~/.profileファイル PATH="$HOME/InstallSoftware/NET_5_Runtime:$PATH"
.NET Core 3.1 SDKのインストール
.NET Core 3.1 SDKを使用すると、.NETを使用したソフトウェアが開発できる。
.NET Core 3.1 SDKをインストールする場合は、対応するランタイムをインストールする必要はない。
パッケージ管理システムからインストール
.NET Core 3.1 SDKをインストールするには、以下のコマンドを入力する。
sudo zypper install dotnet-sdk-3.1
.NET Core 3.1 ランタイムのみをインストールするには、以下のコマンドを実行する。
sudo zypper install dotnet-runtime-3.1
もし、ASP.NET Core ランタイムも必要ならば、それもインストールする。
※注意
ASP.NET CoreのSDKは、.NET Core SDKに含まれているので注意すること。
sudo zypper install aspnetcore-runtime-3.1
手動でインストール
まず、Microsoftの公式Webサイトにアクセスして、.NET Core 3.1 SDKをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf sdk-<バージョン名>-linux-x64-binaries.tar.gz mv sdk-<バージョン名>-linux-x64-binaries NETCore_3_1_SDK mv NETCore_3_1_SDK ~/InstallSoftware
次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。
vi ~/.profile
# ~/.profileファイル PATH="$HOME/InstallSoftware/NETCore_3_1_SDK:$PATH"
.NET Core 3.1 ランタイムをインストールする場合も同様、Microsoftの公式Webサイトにアクセスして、.NET Core 3.1 ランタイムをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries NETCore_3_1_Runtime mv NETCore_3_1_Runtime ~/InstallSoftware
次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。
vi ~/.profile
# ~/.profileファイル PATH="$HOME/InstallSoftware/NETCore_3_1_Runtime:$PATH"
複数のバージョンのインストール (手動)
.NET Foundationが提供するdotnet-install.shファイルを使用して、.NETの複数のバージョンをインストールできる。
dotnet-install.shファイルのドキュメントは、以下に示すMicrosoft公式Webサイトにある。
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script
以下の例では、"current"チャネルにある最新バージョンを、~/InstallSoftware/NET_SDKディレクトリにインストールしている。
./dotnet-install.sh --install-dir /home/<ユーザ名>/InstallSoftware/NET_SDK -channel Current -version latest
以下の例では、"current"チャネルにある.NET SDK バージョン5.0.403を、~/InstallSoftware/NET_SDKディレクトリにインストールしている。
./dotnet-install.sh --install-dir /home/<ユーザ名>/InstallSoftware/NET_SDK -channel Current -version 5.0.403
また、インストールする前に-Dryrun
オプションまたは--dry-run
オプションを付加して、インストールをシミュレートすることを推奨する。
./dotnet-install.sh -Dryrun --install-dir /home/<ユーザ名>/InstallSoftware/NET_SDK -channel Current -version latest
インストールの完了後、利用可能な.NET SDKを確認することができる。
dotnet --list-sdks
dotnet --version
複数のバージョンのアンインストール (手動)
dotnet-install.shファイルを使用してインストールした.NETをアンインストール手順を記載する。
自動化された.NET Uninstall Toolは、まだLinuxをサポートしていないため、手動でアンインストールする必要がある。
まず、インストールされている.NETのバージョンを表示する。
dotnet --list-sdks
次に、任意の.NET SDKをアンインストールする。
SDK_VERSION="5.0.403" DOTNET_UNINSTALL_PATH="${HOME}/InstallSoftware/NET_SDK" sudo rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
dotnet-install.shファイルを使用してインストールしている場合、dotnetホストと共有パッケージもインストールされるが、
バージョンによっては、追加でアンインストールしなければならない場合もある。
以下の例では、.NET SDK(sdk、host、shared)を完全にアンインストールしている。
SDK_VERSION="5.0.403" DOTNET_VERSION="5.0.12" DOTNET_UNINSTALL_PATH="${HOME}/InstallSoftware/NET_SDK" sudo rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION sudo rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$DOTNET_VERSION sudo rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$DOTNET_VERSION sudo rm -rf $DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$DOTNET_VERSION sudo rm -rf $DOTNET_UNINSTALL_PATH/host/fxr/$DOTNET_VERSION
.NETランタイムまたは.NET SDKの設定
.NETランタイムを使用したソフトウェアを実行する場合、環境変数DOTNET_ROOT
にdotnet実行ファイルがあるディレクトリのフルパスを指定する必要がある。
既に、環境変数PATH
にdotnet実行ファイルがあるディレクトリのパスを追加している場合は、以下のように、~/.profileファイル等に追記する。
# Adding PATH environment variable
export PATH="<.NETランタイムまたは.NET SDKのインストールディレクトリ>:${PATH}"
# Setting .NET Runtime or .NET SDK Directory
export DOTNET_ROOT="<.NETランタイムまたは.NET SDKのインストールディレクトリ> 例. {HOME}/InstallSoftware/NET_5_SDK>"
# テレメトリを無効にする場合
export DOTNET_CLI_TELEMETRY_OPTOUT=1
# または
export DOTNET_CLI_TELEMETRY_OPTOUT=true
.NET Core SDKとランタイムの保存場所
.NET Core SDKとランタイムの親ディレクトリは、dotnet --list-sdks
コマンドおよびdotnet --list-runtimes
コマンドからの出力に一覧表示される。
.NET Coreをアンインストールする方法
.NET Core 2.1以降では、パッケージマネージャー(yumやapt-get、zypper等)を使用してアップグレードする場合、.NET Core SDKをアンインストールする必要はない。
パッケージマネージャーのupdateコマンドやrefreshコマンドでは、新しいバージョンが正常にインストールされると、古いバージョンが自動的に削除されるからである。
パッケージマネージャーを使用して.NET Coreをインストールした場合は、それと同じパッケージマネージャーを使用して、.NET Core SDKまたはランタイムをアンインストールする。
まず、.NET Core SDKと依存ファイルをアンインストールするため、以下のコマンドを実行する。
sudo zypper remove dotnet-sdk-3.1 sudo zypper remove libunwind libicu libuuid
次に、登録したリポジトリを削除する場合は、以下のコマンドを実行する。(削除は必須ではない)
sudo zypper remove /etc/yum.repos.d/microsoft-prod.repo
GPG鍵も含めて削除する場合は、以下のコマンドを実行する。(削除は必須ではない)
sudo rpm -qa gpg-pubkey \* --qf "%{version}-%{release} %{summary}\n" | grep microsoft
上記の検索結果に、********-******** gpg(Microsoft (Release signing) <gpgsecurity@microsoft.com>)のようなリストが表示される。(アスタリスクの箇所がGPG鍵である)
このGPG鍵を使用して、以下のコマンドを実行する。
sudo rpm -e --allmatches gpg-pubkey-xxxxxxxx-xxxxxxxx
C#プロジェクトの作成
C#_Linuxという名前の.NETコンソールプロジェクトを作成する。
- VS Codeのメインメニューから、[ファイル] - [フォルダを開く]を選択する。
- [フォルダを開く]ダイアログから、C#_Linuxディレクトリを作成して、[フォルダを選択]を選択する。
このディレクトリ名がプロジェクト名と名前空間名になる。 - VS Codeのメインメニューから、[表示] - [端末]を選択する。
- VS Codeのメイン画面下部に、[ターミナル]タブが表示される。
- [ターミナル]タブにおいて、以下のコマンドを実行する。
- 単一の.NET SDKをインストールしている場合
dotnet new console
- または
dotnet new console --output C#_Sample01
- 複数の.NET SDKをインストールしている場合
dotnet new console --framework net6.0
例. .NET 6を使用する場合- または
dotnet new console --output C#_Sample01 --framework net6.0
例. .NET 6を使用する場合
- 単一の.NET SDKをインストールしている場合
- ワークスペースから、Program.csファイルを開く。
初めて、.csファイルを開く場合、OmniSharpがエディタに読み込まれる。 - VS Codeの右下に、ソフトウェアのビルドとデバッグに不足しているアセットを追加するメッセージが表示されるため、[Yes]ボタンを選択する。
C#プロジェクトをビルドおよび実行を同時に行う場合、C#プロジェクトのディレクトリに移動して、以下のコマンドを実行する。
dotnet run --project C#_Sample01
C#プロジェクトのデバッグ
入力の許可
デバッグコンソールは、実行中のプログラムのターミナル入力を受け付けないため、ターミナル入力を許可するには、統合ターミナルまたは外部ターミナルを使用する。
まず、プロジェクトディレクトリの.vscode/launch.jsonファイルを開く。
console
を、internalConsole
から以下のように変更する。
# VS Codeの統合ターミナルを使用する場合
"console": "integratedTerminal",
# VS Codeの外部ターミナルを使用する場合
"console": "externalTerminal",
.csファイルの任意のステップにおいて、[F9]キーを押下してブレークポイントを張る。
[F5]キーを押下して、C#プロジェクトをデバッグする。
.NET SDKのバージョンを切り替える
インストールされている.NET SDKのバージョンを確認する。
dotnet --list-sdks # 出力例 5.0.403 [/usr/local/share/dotnet/sdk] 6.0.100 [/usr/local/share/dotnet/sdk]
C#のプロジェクトディレクトリに移動して、以下のコマンドを実行する。
cd /<C#等のプロジェクトディレクトリ> dotnet new globaljson --sdk-version 5.0.403
これにより、global.jsonファイルが以下の内容で作成される。
{
"sdk": {
"version": "5.0.403"
}
}
最後に、.NET SDKのバージョンが切り替わっているかどうか確認する。
dotnet --version # 出力例 5.0.403
C#プロジェクトのリリース
C#のcsproj拡張子のファイルが存在するディレクトリにおいて、以下のコマンドを実行する。
dotnet publish -c:Release -r:<ターゲットプラットフォーム> -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained:false
以下の例では、Linux x64向けとPinePhone向けにリリースビルドしている。
# Linux x64向け dotnet publish -c:Release -r:linux-x64 -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained:false # PinePhone向け (Linux Arch64) dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained:false
以下に、各オプションの意味を記載する。
-c:Release
- リリースビルド
-r:<ターゲットプラットフォーム>
- ターゲットプラットフォームは以下の通りである。
- win10-x64 … ターゲットをWindows 10 x64にする。
- win10-x86 … ターゲットをWindows 10 x86にする。
- linux-x64 … ターゲットをLinux x64にする。
- linux-x86 … ターゲットをLinux x86にする。
- linux-arm64 … ターゲットをLinux aarch64にする。
- linux-arm … ターゲットをLinux arm32にする。
- ターゲットプラットフォームは以下の通りである。
-p:PublishReadyToRun=true
- 事前コンパイル方式にする。(初回から起動速度が速くなる)
-p:PublishSingleFile=true
- 出力ファイルを1つのexeファイルにまとめる。
--self-contained:false
- 実行ファイルに.NETランタイムを含めない。
また、C#プロジェクトの.vscodeディレクトリにtasks.jsonファイルを作成して、以下の設定を追加してもよい。
// tasks.json
// ...略
// リリースビルド
"args": [
"publish",
"-c:Release",
"-r:<ターゲットプラットフォーム>",
"-p:PublishReadyToRun=true",
"-p:PublishSingleFile=true",
"--self-contained:false",
],
// デバッグビルド
//"args": [
// "publish",
// "-c:Debug",
// "-r:<ターゲットプラットフォーム>",
// "-p:PublishReadyToRun=true",
// "-p:PublishSingleFile=true",
// "--self-contained:false",
//],
// ...略
リリースする実行ファイルにデバッグ情報を付加しない場合は、C#プロジェクトのcsproj拡張子のファイルに以下の設定を追記する。(推奨)
<PropertyGroup>
// ...略
<DebugType Condition="'$(Configuration)' == 'Release'">none</DebugType>
// ...略
</PropertyGroup>
C#プロジェクトにおけるターゲッットフレームワークの変更
C#プロジェクトのターゲットフレームワークを1つ設定するには、プロジェクトファイル(.csproj)を開いて、TargetFramework
エレメントを変更する。
以下の例では、ターゲットを.NET 5に変更している。
.csprojファイル
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
複数のターゲットを指定する場合、TargetFrameworks
エレメントを使用して、セミコロン(;
)で囲む必要がある。
以下の例では、ターゲットを.NET Core 3.1、.NET 5、.NET 6に変更している。
.csprojファイル
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net5.0;6.0</TargetFrameworks>
</PropertyGroup>
</Project>
ターゲットフレームワークは、通常、ターゲットフレームワークモニカー(TFM)により参照される。
下表に、.NET SDKおよびNuGetクライアントによってサポートされるターゲットフレームワークを示す。
同等のものが括弧内に示されている。 例えば、win81はnetcore451と同等のTFMである。
対象とする Framework | TFM |
---|---|
.NET 5以降および.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 net5.0 net6.0 |
.NET Standard | netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net11 net20 net35 net40 net403 net45 net451 net452 net46 net461 net462 net47 net471 net472 net48 |
ユニバーサルWindowsプラットフォーム | uap (uap10.0) uap10.0 (win10) (netcore50) |
.NET Micro Framework | netmf |
Windowsストア | netcore (netcore45) netcore45 (win) (win8) netcore451 (win81) |
TFMの詳細は、Microsoftの公式Webサイトを参照すること。
VS Codeの拡張機能
VS Codeでは、拡張機能をインストールすることにより、C#の機能を強化することができる。
C#の開発におけるVS Codeの拡張機能を以下に示す。
- C#
- この拡張機能は、シンタックスハイライティング、インテリセンス、定義への移動、すべての参照の検索などを追加します。また、C#アプリケーションのデバッグをサポートします。
- デバッグについては、.NET Coreデバッガの設定方法を参照することを推奨する。
- C# Extensions
- C#のクラスやインターフェースを簡単に追加できる機能である。
- この拡張機能は、クラスやインターフェイスのための新しいファイルの作成およびプロジェクトの名前空間を設定等を自動で行う。
- C# Snippets
- C#のコードスニペットを多数収録している。
- C# XML Documentation Comments
- ソースコードにXMLコメントを追加する時、より快適な操作性を実現する機能である。
ASP.NET Coreの開発におけるVS Codeの拡張機能を以下に示す。
- ASP.NET Core Snippets
- ASP.NET Coreのコントローラやアクションを簡単に構築するためのスニペットを収録している。
- WilderMinds社のASP.NET Core Snippets
- ASP.NET Core Snippetsの代わりに、よく似たスニペットセットを収録している。
- ASP.NET Helper
- Razorのビューページ内にIntellisenseを追加する。
- HTML Snippets
- HTMLスニペットに加えて、HTMLシンタックスハイライトのサポートを追加する。
- ちなみに、VS CodeにはEmmetが内蔵されており、HTMLのコーディングが非常に速くなる。
- IntelliSense for CSS class names
- プロジェクト内のCSSクラス定義に基づいて、HTMLのclass属性にCSSクラス名を補完する。
その他
- Git Extension Pack
- Gitにおける5つの拡張機能をインストールする拡張機能である。