MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - .NET SDKのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - .NET SDK
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== .NETをインストールする前に == .NETをインストールする前に、テレメトリ機能を無効にする。<br> vi ~/.profile <br> # ~/.profileファイル export DOTNET_CLI_TELEMETRY_OPTOUT=1 # または export DOTNET_CLI_TELEMETRY_OPTOUT=true <br> オプトアウトとは、個人情報の第三者提供に関し、個人データの第三者への提供を本人の求めに応じて停止することである。<br> <br><br> == 依存関係のライブラリのインストール == ==== パッケージ管理システムからインストール ==== パッケージ管理システムを使用してインストールする場合、以下のライブラリが自動的にインストールされる。<br> # RHEL libicu openssl openssl-libs krb5-server krb5-libs # SUSE libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 <br> <u>※注意</u><br> <u>.NET Core 2.1以前のバージョンをインストールする場合、以下に示すライブラリもインストールする必要がある。<br></u><br> # RHEL sudo dnf iinstall libunwind libuuid # SUSE sudo zypper install libunwind libuuid1 <br> ==== 手動でインストール ==== 手動で.NETをインストールする場合および自己完結型ソフトウェアを公開する場合は、以下の依存関係のライブラリをインストールする。<br> # RHEL sudo dnf install curl libcurl lttng-ust libicu openssl openssl-libs krb5-server krb5-libs # 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 <br> <u>※注意</u><br> <u>.NET Core 2.1より以前のバージョンには、以下の依存関係のライブラリもインストールする必要がある。<br></u><br> # RHEL sudo dnf iinstall libunwind libuuid # SUSE sudo zypper install libunwind libuuid1 <br><br> == リポジトリの登録 == ==== パッケージ管理システムからインストール ==== .NET SDKをインストールする前に、以下のコマンドを入力して、Microsoftリポジトリキーを登録する。<br> # RHEL # RHELに.NETをインストールするには、Red Hat Subscription Managerを使用して登録する必要がある sudo rpm -Uvh https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm # SLE 15 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 # openSUSE Leap 15 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 <br> リポジトリを最新の状態にするため、以下のコマンドを入力する。<br> # RHEL sudo dnf update # SUSE sudo zypper update <br> ==== 手動でインストール ==== リポジトリの登録は不要である。<br> <br><br> == .NET SDKのインストール == .NET SDKを使用すると、.NETを使用したソフトウェアが開発できる。<br> <u>.NET SDK をインストールする場合は、対応するランタイムをインストールする必要はない。</u><br> <br> ==== パッケージ管理システムからインストール ==== .NET SDKをインストールするには、以下のコマンドを実行する。<br> # RHEL # .NETは、RHEL 9のAppStreamリポジトリに含まれている sudo dnf install dotnet-sdk-X.0 # X : メジャーバージョン # SUSE sudo zypper install dotnet-sdk-X.0 # X : メジャーバージョン <br> ==== 手動でインストール ==== まず、[https://dotnet.microsoft.com/download/dotnet Microsoftの公式Webサイト]にアクセスして、.Net SDKをダウンロードする。<br> ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。<br> tar xf dotnet-sdk-<バージョン名>-linux-x64.tar.gz mv dotnet-sdk-<バージョン名>-linux-x64 <任意のディレクトリ> <br> 次に、~/.profileファイル等に、環境変数<code>PATH</code>を設定する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<.NET SDKのインストールディレクトリ>:$PATH" </syntaxhighlight> <br><br> == .NETランタイムのインストール == ==== パッケージ管理システムからインストール ==== ASP.NETランタイムを使用すると、ランタイムを提供しない.NETを使用して開発されたソフトウェアが実行できる。<br> .NETの最も互換性の高いランタイムであるASP.NETランタイムがインストールには、以下のコマンドを実行する。<br> # RHEL sudo dnf install aspnetcore-runtime-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン # SUSE sudo zypper install aspnetcore-runtime-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン <br> ASP.NETランタイムの代替手段として、ASP.NETを含まない.NETランタイムをインストールする場合は、以下に示すコマンドを実行する。<br> # RHEL sudo dnf install dotnet-runtime-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン # SUSE sudo zypper install dotnet-runtime-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン <br> ==== 手動でインストール ==== [https://dotnet.microsoft.com/download/dotnet Microsoftの公式Webサイト]にアクセスして、.NETランタイムをダウンロードする。<br> ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。<br> tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries <任意のディレクトリ> <br> 次に、~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<.NETランタイムのインストールディレクトリ>:$PATH" </syntaxhighlight> <br><br> == .NET Core 3.1 SDKのインストール == .NET Core 3.1 SDKを使用すると、.NETを使用したソフトウェアが開発できる。<br> <u>.NET Core 3.1 SDKをインストールする場合は、対応するランタイムをインストールする必要はない。</u><br> <br> ==== パッケージ管理システムからインストール ==== .NET Core 3.1 SDKをインストールするには、以下のコマンドを入力する。<br> sudo zypper install dotnet-sdk-3.1 <br> .NET Core 3.1 ランタイムのみをインストールするには、以下のコマンドを実行する。<br> sudo zypper install dotnet-runtime-3.1 <br> もし、ASP.NET Core ランタイムも必要ならば、それもインストールする。<br> <br> <u>※注意</u><br> <u>ASP.NET CoreのSDKは、.NET Core SDKに含まれているので注意すること。</u><br> sudo zypper install aspnetcore-runtime-3.1 <br> ==== 手動でインストール ==== まず、[https://dotnet.microsoft.com/download/dotnet Microsoftの公式Webサイト]にアクセスして、.NET Core 3.1 SDKをダウンロードする。<br> ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。<br> tar xf sdk-<バージョン名>-linux-x64-binaries.tar.gz mv sdk-<バージョン名>-linux-x64-binaries NETCore_3_1_SDK mv NETCore_3_1_SDK ~/InstallSoftware <br> 次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。<br> vi ~/.profile <br> # ~/.profileファイル PATH="$HOME/InstallSoftware/NETCore_3_1_SDK:$PATH" <br> .NET Core 3.1 ランタイムをインストールする場合も同様、[https://dotnet.microsoft.com/download/dotnet Microsoftの公式Webサイト]にアクセスして、.NET Core 3.1 ランタイムをダウンロードする。<br> ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。<br> tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries NETCore_3_1_Runtime mv NETCore_3_1_Runtime ~/InstallSoftware <br> 次に、~/.profileファイルまたは~/.bashrcファイル等に、環境変数PATHを設定する。<br> vi ~/.profile <br> # ~/.profileファイル PATH="$HOME/InstallSoftware/NETCore_3_1_Runtime:$PATH" <br><br> == 複数のバージョンのインストール (手動) == .NET Foundationが提供する[https://dot.net/v1/dotnet-install.sh インストールシェルスクリプト]を使用して、.NETの複数のバージョンをインストールできる。<br> <br> インストールシェルスクリプトのマニュアルは、[https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script Microsoftの公式Webサイト]にある。<br> <br> インストールシェルスクリプトに実行権限を付加する。<br> chmod u+x ./dotnet-install.sh <br> .NET SDKをインストールする。<br> currentチャネルからSTSチャネルに変更されたことに注意する。<br> # 最新の.NET SDKをインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version latest # .NET SDK 7.0.100をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 7.0.100 # .NET SDK 6.0.403 (LTS)をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 6.0.403 <br> また、インストールする前に<code>-Dryrun</code>オプションまたは<code>--dry-run</code>オプションを付加して、インストールをシミュレートすることもできる。<br> # 最新の.NET SDKのインストールをシミュレートする場合 ./dotnet-install.sh -Dryrun --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version latest <br> インストールの完了後、利用可能な.NET SDKを確認することができる。<br> dotnet --list-sdks <br><br> == 複数のバージョンのアンインストール (手動) == dotnet-install.shファイルを使用してインストールした.NETをアンインストール手順を記載する。<br> <u>自動化された.NET Uninstall Toolは、まだLinuxをサポートしていないため、手動でアンインストールする必要がある。</u><br> <br> まず、インストールされている.NETのバージョンを表示する。<br> dotnet --list-sdks <br> 次に、任意の.NET SDKをアンインストールする。<br> SDK_VERSION="5.0.403" DOTNET_UNINSTALL_PATH="${HOME}/InstallSoftware/NET_SDK" sudo rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION <br> <u>dotnet-install.shファイルを使用してインストールしている場合</u>、dotnetホストと共有パッケージもインストールされるが、<br> バージョンによっては、追加でアンインストールしなければならない場合もある。<br> <br> 以下の例では、.NET SDK(sdk、host、shared)を完全にアンインストールしている。<br> DOTNET_VERSION="<.NETのバージョン 例 : 5.0.12>" SDK_VERSION="<.NET SDKのバージョン 例 : 5.0.403>" cd <.NET SDKのインストールディレクトリ> rm -rf host/fxr/$DOTNET_VERSION rm -rf packs/Microsoft.AspNetCore.App.Ref/$DOTNET_VERSION rm -rf packs/Microsoft.NETCore.App.Host.linux-x64/$DOTNET_VERSION rm -rf packs/Microsoft.NETCore.App.Ref/$DOTNET_VERSION rm -rf sdk/$SDK_VERSION rm -rf sdk-manifests/$DOTNET_VERSION rm -rf shared/Microsoft.AspNetCore.All/$DOTNET_VERSION rm -rf shared/Microsoft.AspNetCore.App/$DOTNET_VERSION rm -rf shared/Microsoft.NETCore.App/$DOTNET_VERSION rm -rf templates/$DOTNET_VERSION <br><br> == .NETランタイムまたは.NET SDKの設定 == .NETランタイムを使用したソフトウェアを実行する場合、環境変数<code>DOTNET_ROOT</code>にdotnet実行ファイルがあるディレクトリのフルパスを指定する必要がある。<br> 既に、環境変数<code>PATH</code>にdotnet実行ファイルがあるディレクトリのパスを追加している場合は、以下のように、~/.profileファイル等に追記する。 <syntaxhighlight lang="sh"> # 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 </syntaxhighlight> <br><br> == .NET Core SDKとランタイムの保存場所 == .NET Core SDKとランタイムの親ディレクトリは、<code>dotnet --list-sdks</code>コマンドおよび<code>dotnet --list-runtimes</code>コマンドからの出力に一覧表示される。<br> <br><br> == .NET Coreをアンインストールする方法 == .NET Core 2.1以降では、パッケージマネージャー(yumやapt-get、zypper等)を使用してアップグレードする場合、.NET Core SDKをアンインストールする必要はない。<br> パッケージマネージャーのupdateコマンドやrefreshコマンドでは、新しいバージョンが正常にインストールされると、古いバージョンが自動的に削除されるからである。<br> <br> パッケージマネージャーを使用して.NET Coreをインストールした場合は、それと同じパッケージマネージャーを使用して、.NET Core SDKまたはランタイムをアンインストールする。<br> <br> まず、.NET Core SDKと依存ファイルをアンインストールするため、以下のコマンドを実行する。<br> sudo zypper remove dotnet-sdk-3.1 sudo zypper remove libunwind libicu libuuid <br> 次に、登録したリポジトリを削除する場合は、以下のコマンドを実行する。(削除は必須ではない)<br> sudo zypper remove /etc/yum.repos.d/microsoft-prod.repo <br> GPG鍵も含めて削除する場合は、以下のコマンドを実行する。(削除は必須ではない)<br> sudo rpm -qa gpg-pubkey \* --qf "%{version}-%{release} %{summary}\n" | grep microsoft <br> 上記の検索結果に、********-******** gpg(Microsoft (Release signing) <gpgsecurity@microsoft.com>)のようなリストが表示される。(アスタリスクの箇所がGPG鍵である)<br> このGPG鍵を使用して、以下のコマンドを実行する。 sudo rpm -e --allmatches gpg-pubkey-xxxxxxxx-xxxxxxxx <br><br> == 一時ファイルの自動生成の無効化 == .NETを使用するとき、/tmpディレクトリ内にclr-debug-pipeファイル(パイプファイル)およびdotnet-diagnostic(ソケットファイル)ファイルが自動的に作成される。<br> これらのファイルの自動生成を抑制する場合、~/.profileファイル等に以下に示す設定を追記する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル # デバッガ、プロファイラ、EventPipeの診断を有効または無効にする # ただし、無効にする場合、デバッグ不可能となることに注意する # export COMPlus_EnableDiagnostics=0 # または、DOTNET_EnableDiagnostics=0 export DOTNET_Diagnostics_LogDirectory="/dev/null" export DOTNET_Diagnostics_AutoSaveDump=false </syntaxhighlight> <br><br> == C#プロジェクトの作成 == C#_Linuxという名前の.NETコンソールプロジェクトを作成する。<br> <br> # VS Codeのメインメニューから、[ファイル] - [フォルダを開く]を選択する。 # [フォルダを開く]ダイアログから、C#_Linuxディレクトリを作成して、[フォルダを選択]を選択する。<br>このディレクトリ名がプロジェクト名と名前空間名になる。 # VS Codeのメインメニューから、[表示] - [端末]を選択する。 # VS Codeのメイン画面下部に、[ターミナル]タブが表示される。 # [ターミナル]タブにおいて、以下のコマンドを実行する。 #* 単一の.NET SDKをインストールしている場合 #*: <code>dotnet new console</code> #*: または #*: <code>dotnet new console --output C#_Sample01</code> #* 複数の.NET SDKをインストールしている場合 #*: <code>dotnet new console --framework net6.0</code> 例. .NET 6を使用する場合 #*: または #*: <code>dotnet new console --output C#_Sample01 --framework net6.0</code> 例. .NET 6を使用する場合 # ワークスペースから、Program.csファイルを開く。<br>初めて、.csファイルを開く場合、OmniSharpがエディタに読み込まれる。 # VS Codeの右下に、ソフトウェアのビルドとデバッグに不足しているアセットを追加するメッセージが表示されるため、[Yes]ボタンを選択する。 <br> C#プロジェクトをビルドおよび実行を同時に行う場合、C#プロジェクトのディレクトリに移動して、以下のコマンドを実行する。<br> dotnet run --project C#_Sample01 <br><br> == C#プロジェクトのデバッグ == ==== launch.json ==== 下表に、launch.jsonファイルの設定の意味を示す。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | 属性 ! style="background-color:#66CCFF;" | 意味 |- | preLaunchTask || デバッグ実行前に行うタスクを指定する。<br>tasks.jsonファイルにある<code>tasks</code>の<code>label</code>属性の値を指定。 |- | program || 起動するプログラムのパスを指定する。<br>初期設定は、${workspaceFolder}/bin/Debug/netX.Y/<ターゲットプラットフォーム>/<C#プロジェクト名>.dll |- | args || 実行ファイルに与える引数を指定する。<br>複数の引数を指定する場合は、カンマ(,)で区切る。 |- | cwd || プログラムの実行に使用するディレクトリを指定する。<br>初期設定は、<code>${workspaceFolder}</code> |- | console || デバッグ対象のプログラムを起動するコンソールの指定する。<br> * internalConsole (デフォルト) *: VS Codeのデバッグコンソールを使用する。 * externalTerminal *: ユーザが指定したターミナルを使用する。 * integratedTerminal *: [ターミナル]パネルを使用する。 |- | internalConsoleOptions || * openOnFirstSessionStart (デフォルト) *: 初回のデバッグセッション開始時のみデバッグコンソールを開く。 *: その後は開いたコンソールが再利用される。 * openOnSessionStart *: デバッグセッションが開始されるごとにデバッグコンソールを新規に開く。 * neverOpen *: 入力を許可する。(<code>Console.Readline</code>メソッドを使用する場合等) *: また、デバッグコンソールを一切表示しない。 |- | externalConsoleOptions || <code>console</code>属性が<code>externalTerminal</code>の場合、設定が有効になる。<br> * openOnFirstSessionStart (デフォルト) *: 初回のデバッグセッション開始時のみデバッグコンソールを開く。 *: その後は開いたコンソールが再利用される。 * openOnSessionStart *: デバッグセッションが開始されるごとにデバッグコンソールを新規に開く。 * neverOpen *: 入力を許可する。(<code>Console.Readline</code>メソッドを使用する場合等) *: また、デバッグコンソールを一切表示しない。 |- | stopAtEntry || *true *: プログラムをデバッグする場合、エントリポイントでデバッグを一時停止する。 *: (プログラムの起動直後にデバッグ実行を中断する) |} </center> <br> その他、下表のような属性が設定できる。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | 属性 ! style="background-color:#66CCFF;" | 意味 |- | env || 環境変数を指定する。 |- | launchBrowser || Webアプリケーションのデバッグを行う場合、起動するWebブラウザを指定する。 |- | sourceFileMap || ソースファイルのマッピングを指定する。 |- | symbolPath || シンボルパスを設定する。 |- | justMyCode || * true (デフォルト) *: 設計者の記述したコードのみデバッグする。 * false *: 外部ライブラリも含めてデバッグする。 |- | requireExactSource || デバッグ実行しているプログラムと一致したpdbファイルおよびソースファイルを必要とする。 |- | enableStepFiltering || マネージコードのプロパティおよび演算子についてもステップ実行を行う。 |- | logging || 出力コンソールに出力するログの種類を指定する。 |- | pipeTransport || VS Codeとデバッガのバックエンドを接続するため、リモートコンピュータに接続する必要がある場合の設定を記述する。 |} </center> <br> ==== 入力の許可 ==== デバッグコンソールは、実行中のプログラムのターミナル入力を受け付けないため、ターミナル入力を許可するには、統合ターミナルまたは外部ターミナルを使用する。<br> <br> まず、プロジェクトディレクトリの.vscode/launch.jsonファイルを開く。<br> <code>console</code>を、<code>internalConsole</code>から以下のように変更する。<br> <syntaxhighlight lang="json"> # VS Codeの統合ターミナルを使用する場合 "console": "integratedTerminal", # VS Codeの外部ターミナルを使用する場合 "console": "externalTerminal", </syntaxhighlight> <br> .csファイルの任意のステップにおいて、[F9]キーを押下してブレークポイントを張る。<br> <br> [F5]キーを押下して、C#プロジェクトをデバッグする。<br> <br> ==== .NET SDKのバージョンを切り替える ==== インストールされている.NET SDKのバージョンを確認する。<br> dotnet --list-sdks # 出力例 5.0.403 [/usr/local/share/dotnet/sdk] 6.0.100 [/usr/local/share/dotnet/sdk] <br> C#のプロジェクトディレクトリに移動して、以下のコマンドを実行する。<br> cd /<C#等のプロジェクトディレクトリ> dotnet new globaljson --sdk-version 5.0.403 <br> これにより、global.jsonファイルが以下の内容で作成される。<br> <syntaxhighlight lang="json"> { "sdk": { "version": "5.0.403" } } </syntaxhighlight> <br> 最後に、.NET SDKのバージョンが切り替わっているかどうか確認する。<br> dotnet --version # 出力例 5.0.403 <br><br> == C#プロジェクトのリリース == C#のcsproj拡張子のファイルが存在するディレクトリにおいて、以下のコマンドを実行する。<br> dotnet publish -c:Release -r:<ターゲットプラットフォーム> -p:PublishReadyToRun=<trueまたはfalse> -p:PublishSingleFile=<trueまたはfalse> --self-contained:<trueまたはfalse> <br> 以下の例では、Linux x64向けとPinePhone向けにリリースビルドしている。<br> # Linux x64向け dotnet publish -c:Release -r:linux-x64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained:false # Linux Arch64向け (PinePhone、Raspberry Pi等) dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained:false <br> 以下に、各オプションの意味を記載する。<br> * <code>-c:Release</code> *: リリースビルド * <code>-r:<ターゲットプラットフォーム></code> ** ターゲットプラットフォームは以下の通りである。 **: 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にする。 * <code>-p:PublishReadyToRun=true</code> *: 事前コンパイル方式にする。 *:初回から起動速度が速くなる。ただし、ファイルサイズが少し大きくなる。 * <code>-p:PublishSingleFile=true</code> (推奨) *: 出力ファイルを1つの実行ファイルにまとめる。 *: <br> *: <u>ただし、.NET 5以降では、単一の実行ファイルにする場合、使用できないAPIや動作が変化するAPIが存在する。(Assemblyのパスが取得できない等)</u> *: <u>代替手段も存在するため、以下に示すMicrosoftの公式Webサイトを参照すること。</u> *: https://docs.microsoft.com/ja-jp/dotnet/core/deploying/single-file#api-incompatibility * <code>--self-contained:false</code> (推奨) *: 実行ファイルに.NETランタイムを含めない。 <br> <u>リリースビルドする実行ファイルにデバッグ情報を付加しない場合は、C#プロジェクトの.csprojファイルに以下の設定を追記する。(推奨)</u><br> <syntaxhighlight lang="xml"> <PropertyGroup> <!-- ...略 --> <DebugType Condition="'$(Configuration)' == 'Release'">none</DebugType> <!-- ...略 --> </PropertyGroup> </syntaxhighlight> <br> また、VS Codeで開発する場合、C#プロジェクトの.vscodeディレクトリにtasks.jsonファイルを作成して、以下の設定を追加してもよい。<br> [Ctrl] + [P]キーを同時押下してコマンドパレットを開いて、"task Debug"または"task Relese"と入力することにより、<br> デバッグビルドまたはリリースビルドすることができるようになる。<br> <syntaxhighlight lang="js"> // tasks.json "version": "〜", "tasks": [ // ...略 // リリースビルド { "label": "Release", "command": "dotnet", "type": "process", "args": [ "publish", "-c:Release", "-r:<ターゲットプラットフォーム 例. linux-x64等>", "-p:PublishReadyToRun=false", "-p:PublishSingleFile=true", "--self-contained:false", "${workspaceFolder}/<C#プロジェクトのファイル名(.csprojファイル)>", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary", ], "problemMatcher": "$msCompile" }, // デバッグビルド { "label": "Debug", "command": "dotnet", "type": "process", "args": [ "publish", "-c:Debug", "-r:<ターゲットプラットフォーム>", "-p:PublishReadyToRun=false", "-p:PublishSingleFile=true", "--self-contained:false", "${workspaceFolder}/<C#プロジェクトのファイル名(.csprojファイル)>", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary", ], "problemMatcher": "$msCompile" }, // ...略 ] </syntaxhighlight> <br><br> == プロジェクトのターゲッットフレームワークの指定 == ターゲットフレームワークは、プロジェクトファイルで指定する。<br> <br> 単一のターゲットフレームワークを指定する場合、プロジェクトファイル(.csproj)の<code>TargetFramework</code>エレメントに記述する。<br> <br> 以下の例では、ターゲットを.NET 6に変更している。<br> <syntaxhighlight lang="xml"> .csprojファイル <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> </Project> </syntaxhighlight> <br> 複数のターゲットを指定する場合、プロジェクトファイル(.csproj)の<code>TargetFrameworks</code>エレメントにセミコロン(<code>;</code>)で囲んで記述する。<br> 以下の例では、ターゲットを.NET Core 3.1、.NET 6、.NET 7に変更している。<br> <syntaxhighlight lang="xml"> .csprojファイル <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFrameworks>netcoreapp3.1;net6.0;net7.0</TargetFrameworks> </PropertyGroup> </Project> </syntaxhighlight> <br> また、各ターゲットフレームワークのアセンブリを条件付きで参照することができる。<br> <code>if-elif-else</code>プリプロセッサを使用して、それらのアセンブリに対して条件付きでコンパイルすることもできる。<br> <br> 以下の例では、.NET 6、.NET Standard 2.1、.NET Framework 4.8のAPIをターゲットとしている。<br> 複数の.NET TFM向けにコンパイルする場合、<code>Condition</code>属性には、実装固有のパッケージを含めることができる。<br> <syntaxhighlight lang="xml"> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netstandard2.1;net6.0;net48</TargetFrameworks> </PropertyGroup> <!-- Conditionally obtain references for the .NET Framework 6.0 target --> <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' "> <Reference Include="System.Net" /> </ItemGroup> <!-- Conditionally obtain references for the .NET Framework 4.8 target --> <ItemGroup Condition=" '$(TargetFramework)' == 'net48' "> <Reference Include="System.Net.Http" /> <Reference Include="System.Threading.Tasks" /> </ItemGroup> </Project> </syntaxhighlight> <br> <syntaxhighlight lang="c#"> public class MyClass { static void Main() { #if NET48 Console.WriteLine("Target framework: .NET Framework 4.8"); #elif NETSTANDARD2_1 Console.WriteLine("Target framework: .NET Standard 2.1"); #elif NET60 Console.WriteLine("Target framework: .NET 6.0"); #else Console.WriteLine("Target framework: etc"); #endif } } </syntaxhighlight> <br> サポートされるターゲットフレームワークのバージョンを表すプリプロセッサを、下表に示す。<br> .NET Standard、.NET Core、.NET 5以降のTFMを表すプリプロセッサを使用する場合、ドットおよびハイフンをアンダースコアに置き換え、小文字を大文字に変更する。<br> (例えば、netstandard 2.1のプリプロセッサは、<code>NETSTANDARD2_1</code>)<br> <br> これらのプリプロセッサは、<code>DisableImplicitFrameworkDefines</code>プロパティで無効にすることができる。<br> <code>DisableImplicitFrameworkDefines</code>プロパティの詳細を知りたい場合は、[https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#disableimplicitframeworkdefines Microsoftの公式Webサイト]を参照すること。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;width:33%;" | ターゲットフレームワーク ! style="background-color:#66CCFF;width:33%;" | プリプロセッサ ! style="background-color:#66CCFF;width:34%;" | その他.NET 5以降で使用できるプリプロセッサ |- | .NET 5以降 および .NET Core | NET<br>NET7_0<br>NET6_0<br>NET5_0<br>NETCOREAPP<br>NETCOREAPP3_1<br>NETCOREAPP3_0<br>NETCOREAPP2_2<br>NETCOREAPP2_1<br>NETCOREAPP2_0<br>NETCOREAPP1_1<br>NETCOREAPP1_0 | NET7_0_OR_GREATER<br>NET6_0_OR_GREATER<br>NET5_0_OR_GREATER<br>NETCOREAPP3_1_OR_GREATER<br>NETCOREAPP3_0_OR_GREATER<br>NETCOREAPP2_2_OR_GREATER<br>NETCOREAPP2_1_OR_GREATER<br>NETCOREAPP2_0_OR_GREATER<br>NETCOREAPP1_1_OR_GREATER<br>NETCOREAPP1_0_OR_GREATER |- | .NET Standard | NETSTANDARD<br>NETSTANDARD2_1<br>NETSTANDARD2_0<br>NETSTANDARD1_6<br>NETSTANDARD1_5<br>NETSTANDARD1_4<br>NETSTANDARD1_3<br>NETSTANDARD1_2<br>NETSTANDARD1_1<br>NETSTANDARD1_0 | NETSTANDARD2_1_OR_GREATER<br>NETSTANDARD2_0_OR_GREATER<br>NETSTANDARD1_6_OR_GREATER<br>NETSTANDARD1_5_OR_GREATER<br>NETSTANDARD1_4_OR_GREATER<br>NETSTANDARD1_3_OR_GREATER<br>NETSTANDARD1_2_OR_GREATER<br>NETSTANDARD1_1_OR_GREATER<br>NETSTANDARD1_0_OR_GREATER |- | .NET Framework | NETFRAMEWORK<br>NET48<br>NET472<br>NET471<br>NET47<br>NET462<br>NET461<br>NET46<br>NET452<br>NET451<br>NET45<br>NET40<br>NET35<br>NET20 | NET48_OR_GREATER<br>NET472_OR_GREATER<br>NET471_OR_GREATER<br>NET47_OR_GREATER<br>NET462_OR_GREATER<br>NET461_OR_GREATER<br>NET46_OR_GREATER<br>NET452_OR_GREATER<br>NET451_OR_GREATER<br>NET45_OR_GREATER<br>NET40_OR_GREATER<br>NET35_OR_GREATER<br>NET20_OR_GREATER |} </center> <br> ターゲットフレームワークは、通常、ターゲットフレームワークモニカー(TFM)により参照される。<br> 下表に、.NET SDKおよびNuGetクライアントによってサポートされるターゲットフレームワークを示す。<br> <br> 同等のものが括弧内に示されている。 例えば、win81はnetcore451と同等のTFMである。<br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ サポート対象のターゲット フレームワーク |- ! style="background-color:#66CCFF;" | 対象とする Framework ! style="background-color:#66CCFF;" | TFM |- | .NET 5以降および.NET Core || netcoreapp1.0<br>netcoreapp1.1<br>netcoreapp2.0<br>netcoreapp2.1<br>netcoreapp2.2<br>netcoreapp3.0<br>netcoreapp3.1<br>net5.0<br>net6.0<br>net7.0 |- | .NET Standard || netstandard1.0<br>netstandard1.1<br>netstandard1.2<br>netstandard1.3<br>netstandard1.4<br>netstandard1.5<br>netstandard1.6<br>netstandard2.0<br>netstandard2.1 |- | .NET Framework || net11<br>net20<br>net35<br>net40<br>net403<br>net45<br>net451<br>net452<br>net46<br>net461<br>net462<br>net47<br>net471<br>net472<br>net48<br> |- | ユニバーサルWindowsプラットフォーム || uap (uap10.0)<br>uap10.0 (win10) (netcore50) |- | .NET Micro Framework || netmf |- | Windowsストア || netcore (netcore45)<br>netcore45 (win) (win8)<br>netcore451 (win81) |} </center> <br> TFMの詳細は、[https://docs.microsoft.com/ja-jp/dotnet/standard/frameworks Microsoftの公式Webサイト]を参照すること。<br> <br><br> == VS Codeの拡張機能 == VS Codeでは、拡張機能をインストールすることにより、C#の機能を強化することができる。<br> <br> C#の開発におけるVS Codeの拡張機能を以下に示す。<br> * [https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp C#] *: この拡張機能は、シンタックスハイライティング、インテリセンス、定義への移動、すべての参照の検索などを追加します。また、C#アプリケーションのデバッグをサポートします。 *: デバッグについては、[https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger.md .NET Coreデバッガの設定方法]を参照することを推奨する。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=jchannon.csharpextensions C# Extensions] *: C#のクラスやインターフェースを簡単に追加できる機能である。 *: この拡張機能は、クラスやインターフェイスのための新しいファイルの作成およびプロジェクトの名前空間を設定等を自動で行う。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=jorgeserrano.vscode-csharp-snippets C# Snippets] *: C#のコードスニペットを多数収録している。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=k--kato.docomment C# XML Documentation Comments] *: ソースコードにXMLコメントを追加する時、より快適な操作性を実現する機能である。 <br> ASP.NET Coreの開発におけるVS Codeの拡張機能を以下に示す。<br> * [https://marketplace.visualstudio.com/items?itemName=rahulsahay.Csharp-ASPNETCore ASP.NET Core Snippets] *: ASP.NET Coreのコントローラやアクションを簡単に構築するためのスニペットを収録している。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=wilderminds.wilderminds-aspnetcore-snippets WilderMinds社のASP.NET Core Snippets] *: ASP.NET Core Snippetsの代わりに、よく似たスニペットセットを収録している。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=schneiderpat.aspnet-helper ASP.NET Helper] *: Razorのビューページ内にIntellisenseを追加する。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=abusaidm.html-snippets HTML Snippets] *: HTMLスニペットに加えて、HTMLシンタックスハイライトのサポートを追加する。 *: ちなみに、VS Codeには[https://code.visualstudio.com/docs/languages/html#_emmet-snippets Emmet]が内蔵されており、HTMLのコーディングが非常に速くなる。 *: <br> * [https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion IntelliSense for CSS class names] *: プロジェクト内のCSSクラス定義に基づいて、HTMLのclass属性にCSSクラス名を補完する。 <br> その他<br> * [https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack Git Extension Pack] *: Gitにおける5つの拡張機能をインストールする拡張機能である。 <br><br> __FORCETOC__ [[カテゴリ:SUSE]]
インストール - .NET SDK
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse