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> <syntaxhighlight lang="sh"> # ~/.profileファイル export DOTNET_CLI_TELEMETRY_OPTOUT=1 # または export DOTNET_CLI_TELEMETRY_OPTOUT=true </syntaxhighlight> <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 16 sudo zypper install libunwind-coredump0 libunwind-ptrace0 libunwind-setjmp0 libuuid1 # SUSE 15 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 16 sudo zypper install lttng-tools liblttng-ctl0 libcurl4 libz1 icu openssl openssl-3 libopenssl3 krb5 # SUSE 15 sudo zypper install lttng-ust libcurl zlib libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 # Mobian sudo apt install curl zlib1g liblttng-ust1 libicu72 openssl libssl3 libkrb5-3 # Manjaro ARM sudo pacman -S --needed curl zlib lttng-ust icu openssl krb5 <br> <u>※注意</u><br> <u>.NET Core 2.1より以前のバージョンには、以下の依存関係のライブラリもインストールする必要がある。<br></u><br> # RHEL sudo dnf iinstall libunwind libuuid # SUSE sudo zypper install libunwind-coredump0 libunwind-ptrace0 libunwind-setjmp0 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 16 sudo rpm -Uvh https://packages.microsoft.com/config/sles/16/packages-microsoft-prod.rpm sudo ln -s /etc/yum.repos.d/microsoft-prod.repo /etc/zypp/repos.d/microsoft-prod.repo # 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 16 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc wget https://packages.microsoft.com/config/opensuse/16/prod.repo sudo mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo sudo chown root:root /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-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン # SUSE sudo zypper install dotnet-sdk-<span style="color:#C00000">X</span>.0 # <span style="color:#C00000">X</span> : メジャーバージョン <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 <任意のディレクトリ> <br> 次に、~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<.NET Core SDK 3.1のインストールディレクトリ>:$PATH" </syntaxhighlight> <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 <任意のディレクトリ> <br> 次に、~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> vi ~/.profile <br> <syntaxhighlight lang="sh"> # ~/.profileファイル export PATH="<.NET Core ランタイムのインストールディレクトリ>:$PATH" </syntaxhighlight> <br><br> == 複数のバージョンのインストール (手動) == .NET Foundationが提供する[https://dot.net/v1/dotnet-install.sh インストールスクリプト]を使用して、.NETの複数のバージョンをインストールできる。<br> または、以下に示すコマンドを実行して、インストールスクリプトをダウンロードすることもできる。<br> wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh <br> インストールシェルスクリプトのマニュアルは、[https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script Microsoftの公式Webサイト]にある。<br> <br> <u>現在、Microsoftから配布されている.NET SDKのバージョンを確認する場合は、[https://dotnet.microsoft.com/ja-jp/download/dotnet .NETの公式Webサイト]を参照すること。</u><br> <br> インストールシェルスクリプトに実行権限を付加する。<br> chmod u+x ./dotnet-install.sh <br> .NET SDKをインストールする。<br> <br> * <code>--channel</code>オプション ** STS **: 最新の標準期間サポートリリース。 ** LTS **: 最新の長期サポートリリース。 ** 特定のリリースを表す <u>A.B</u> 形式の2部構成のバージョン **: <code>8.0</code>等 ** 特定のSDKリリースを表す <u>A.B.Cxx</u> 形式の3部構成のバージョン **: <code>8.0.302</code>や<code>6.0.423</code>等 **: .NET 5以降で使用できる。 *: <br> * <code>-InstallDir <.NET SDKのインストールディレクトリ></code> または <code>--install-dir <.NET SDKのインストールディレクトリ></code> *: .NET SDKのインストールディレクトリを指定する。 # 最新の.NET SDKをインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version latest # .NET SDK 9.0.100をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel <STS または Current> -version 9.0.100 # .NET SDK 8.0.302 (LTS)をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version 8.0.302 # .NET SDK 6.0.403 (LTS)をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version 6.0.423 <br> また、インストールする前に<code>-Dryrun</code>オプションまたは<code>--dry-run</code>オプションを付加して、インストールをシミュレートすることもできる。<br> # 最新の.NET SDKのインストールをシミュレートする場合 ./dotnet-install.sh -Dryrun --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -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> <syntaxhighlight lang="sh"> export SDK_VERSION="<.NET SDKのバージョン 例: 7.0.400>"; \ export DOTNET_UNINSTALL_PATH="<.NET SDKのインストールディレクトリ>" rm -rf "$DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION" </syntaxhighlight> <br> <u>dotnet-install.shファイルを使用してインストールしている場合</u>、dotnetホストと共有パッケージもインストールされるが、<br> バージョンによっては、追加でアンインストールしなければならない場合もある。<br> <br> 以下の例では、.NETランタイム、および、.NET SDK (sdk、host、shared) を完全にアンインストールしている。<br> <syntaxhighlight lang="sh"> export DOTNET_UNINSTALL_PATH="<.NET SDKのインストールディレクトリ>" export RUNTIME_VERSION="<.NETランタイムのバージョン 例 : 7.0.10>"; \ export SDK_VERSION="<.NET SDKのバージョン 例 : 7.0.400>" rm -rf "$DOTNET_UNINSTALL_PATH/host/fxr/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/packs/Microsoft.AspNetCore.App.Ref/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/packs/Microsoft.NETCore.App.Host.linux-x64/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/packs/Microsoft.NETCore.App.Ref/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/sdk-manifests/$SDK_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$RUNTIME_VERSION"; \ rm -rf "$DOTNET_UNINSTALL_PATH/templates/$RUNTIME_VERSION" </syntaxhighlight> <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_8_SDK>" # テレメトリを無効にする場合 export DOTNET_CLI_TELEMETRY_OPTOUT=1 # または export DOTNET_CLI_TELEMETRY_OPTOUT=true </syntaxhighlight> <br><br> == .NETランタイム / .NET SDKの保存場所 == .NETランタイム / .NET SDKのインストールディレクトリは、<code>dotnet --list-sdks</code>コマンドおよび<code>dotnet --list-runtimes</code>コマンドからの出力に一覧表示される。<br> <br><br> == .NETランタイム / .NET SDKのアンインストール == .NET Core 2.1以降では、パッケージ管理システム(<code>dnf</code>、<code>apt</code>、<code>zypper</code>等)を使用してアップグレードする場合、.NETをアンインストールする必要はない。<br> なぜなら、パッケージ管理システムの<code>update</code>コマンドまたは<code>refresh</code>コマンド等では、新しいバージョンが正常にインストールされる時、古いバージョンが自動的に削除されるからである。<br> <br> パッケージ管理システムを使用して.NETランタイム / .NET SDKをインストールした場合は、パッケージ管理システムを使用して.NETランタイム / .NET SDKをアンインストールする。<br> <br> まず、.NET SDKと依存ファイルをアンインストールするため、以下のコマンドを実行する。<br> # RHEL sudo dnf remove dotnet-sdk-<バージョン> dotnet-runtime-<バージョン> sudo dnf remove libunwind libicu libuuid # SUSE sudo zypper remove dotnet-sdk-<バージョン> dotnet-runtime-<バージョン> sudo zypper remove libunwind libicu libuuid1 <br> 次に、登録したリポジトリを削除する場合は、以下のコマンドを実行する。(削除は必須ではない)<br> # RHEL sudo dnf remove /etc/yum.repos.d/microsoft-prod.repo # SUSE sudo zypper remove /etc/yum.repos.d/microsoft-prod.repo <br> GPG鍵も含めて削除する場合は、以下のコマンドを実行する。(削除は必須ではない)<br> # RHEL / SUSE 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#プロジェクトのリリース == ==== 単一のTFM ==== 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 # Linux Arch64向け TFMの指定 dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained false -f:<.NETのターゲットフレームワークのバージョン 例: net8.0> <br> 以下に、各オプションの意味を記載する。<br> * <code>-c:Release</code> *: リリースビルド *: <code>-c Release</code>オプションは不要である。 *: このオプションは、ソフトウェアのリリースビルドを公開することを明示するために提供されている。 *: .NET Core SDK 3.1以降を使用する場合、<code>dotnet publish</code>コマンドを実行する時の既定の公開モードは、フレームワークに依存する実行可能ファイルである。 *: <br> * <code>-r:<ターゲットプラットフォーム></code> ** ターゲットプラットフォームは以下の通りである。 **: win-x64 … ターゲットをWindows x64にする。 **: win-x86 … ターゲットをWindows x86にする。 **: win-arm64 … ターゲットをWindows AArch64にする。 **: linux-x64 … ターゲットをLinux x64にする。 **: linux-x86 … ターゲットをLinux x86にする。 **: linux-musl-x64 … ターゲットをAlpine Linuxのようなmuslを使用した軽量ディストリビューションにする。 **: linux-arm64 … ターゲットをLinux AArch64にする。 **: linux-arm … ターゲットをLinux Arm32にする。 **: linux-musl-arm64 … ターゲットをAArch64 Arm v8向けDockerイメージおよび最小限のベースイメージの構築に使用にする。 **: linux-bionic-arm64 … ターゲットをAndroidのbionic libcを使用したLinuxディストリビューションにする。 例: Termux **: osx-arm64 … ターゲットをMacOS AArch64にする。 **: osx-x64 … ターゲットをMacOS x64にする。 **: android-arm64 … ターゲットをAndroidにする。 **: ios-arm64 … ターゲットをiPhoneにする。 *: <br> * <code>-p:PublishReadyToRun=true</code> *: 事前コンパイル方式にする。 *:初回から起動速度が速くなる。ただし、ファイルサイズが少し大きくなる。 *: <br> * <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 *: <br> * <code>--self-contained false</code> (推奨) *: .NETランタイムを含めた単一の実行ファイルを生成する。 *: 実行環境に.NETランタイムがインストールされている必要がない。 *: <br> * -p:PublishTrimmed=true *: 使用していない依存関係を削除する。 *: アプリケーションサイズを削減できる。 *: <br> * -p:IncludeNativeLibrariesForSelfExtract=true *: ネイティブライブラリ (libHarfBuzzSharp.soやlibSkiaSharp.so等) を実行ファイルに組み込む。 *: 実行時に自動的に展開される。 <br> <u>※注意</u><br> <u>PublishTrimmedオプションを使用する場合、リフレクションを使用しているコードに影響が出る可能性がある。</u><br> <u>ただし、生成されるファイルサイズは大きくなるが、単一の実行ファイルで完結する。</u><br> <u>SkiaSharpのような特殊なネイティブライブラリを使用している場合は、追加の設定が必要になることがある。</u><br> <br> <u>リリースビルドする実行ファイルにデバッグ情報を付加しない場合は、プロジェクトファイル(.csproj拡張子)ファイルに以下の設定を追記する。(推奨)</u><br> <syntaxhighlight lang="xml"> <PropertyGroup> <!-- ...略 --> <DebugType Condition="'$(Configuration)' == 'Release'">none</DebugType> <!-- ...略 --> </PropertyGroup> </syntaxhighlight> <br> また、プロジェクトファイル(.csproj拡張子)を編集して、発行を指定することもできる。<br> これらのプロパティには、以下に示すエレメントがある。<br> * PublishSingleFile *: 単一ファイルの発行を有効にする。 *: また、<code>dotnet build</code>コマンド実行時の単一ファイルの警告を有効にする。 *: <br> * SelfContained *: 発行するプロジェクトが自己完結型またはフレームワーク依存であるかを判断する。 *: <br> *: 自己完結型としてソフトウェアを発行する時、プラットフォーム固有の実行可能ファイルが生成される。 *: 出力されるpublishディレクトリには、.NETライブラリやターゲットランタイム等のソフトウェアの全てのコンポーネントが格納される。 *: この時、発行したソフトウェアは、他の.NETから分離されており、ローカルにインストールされた共有ランタイムを使用しない。 *: そのため、発行したソフトウェアを使用するユーザは、.NETのダウンロードおよびインストールを行うことは不要となる。 *: <br> * RuntimeIdentifier *: ターゲットとするOSとアーキテクチャの種類を指定する。 *: デフォルトでは、<code><SelfContained>true</SelfContained></code>が設定される。 *: 単一ファイルのプロジェクトは、常にOSとアーキテクチャに固有である。 *: 複数のOSおよびアーキテクチャを発行する場合は、<code>linux-x64</code>、<code>linux-arm64</code>、<code>win10-x64</code>等、構成ごとに発行する必要がある。 <syntaxhighlight lang="xml"> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <RuntimeIdentifier>linux-arm64</RuntimeIdentifier> </PropertyGroup> </Project> </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> ==== 複数のTFM ==== 複数のTFMを指定するプロジェクトをpulishする場合、標準のpublishコマンドでは失敗するが、<br> マルチターゲットを実行するカスタムターゲットを作成することができる。<br> <br> これを行うには、ソリューションディレクトリ下にDirectory.Build.propsファイル、または、Directory.Build.targetsファイルを作成する。<br> vi Directory.Build.props または vi Directory.Build.targets <br> <syntaxhighlight lang="xml"> <!-- Directory.Build.propsファイル または Directory.Build.targetsファイル --> <Project> <Target Name="PublishProjectIfFrameworkSet" DependsOnTargets="Publish" Condition=" '$(TargetFramework)' != '' " /> <Target Name="PublishProjectForAllFrameworksIfFrameworkUnset" Condition=" '$(TargetFramework)' == '' "> <ItemGroup> <_PublishFramework Include="$(TargetFrameworks)" /> </ItemGroup> <MSBuild Projects="$(MSBuildProjectFile)" Targets="Publish" Properties="TargetFramework=%(_PublishFramework.Identity)" /> </Target> <Target Name="PublishAll" DependsOnTargets="PublishProjectIfFrameworkSet;PublishProjectForAllFrameworksIfFrameworkUnset" /> </Project> </syntaxhighlight> <br> ソリューションディレクトリ下で以下に示すコマンドを実行することにより、定義された全ての.NETを使用してビルドすることができる。<br> dotnet msbuild /t:PublishAll /p:Configuration=Release <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> == .NET 8の変更点 == .NET 8では、いくつかのアーキテクチャに関する重要な変更が導入された。<br> 特に、Linux環境での動作に影響を与える変更がある。<br> <br> * ネイティブAOT (Ahead-of-Time) コンパイルのサポートが強化されて、プラットフォーム固有の最適化がより重視された。 * クロスプラットフォームビルドの処理方法が改善されて、より厳密なプラットフォームチェックが導入された。 <br> ==== AnyCPUの扱いの変更 ==== * .NET 7以前 *: AnyCPUは、実行時に適切なプラットフォームを動的に選択される。 * .NET 8以降 *: 特にLinux環境では、より明示的なプラットフォーム指定が必要になるケースが増加した。 <br> AnyCPUの取り扱いは、以下に示す目的で導入された。<br> * より効率的なネイティブコード生成 * プラットフォーム固有の最適化の改善 * セキュリティとパフォーマンスの向上 * クロスプラットフォームビルドの信頼性向上 <br> ただし、この動作は環境やプロジェクトの設定によって異なる場合がある。<br> 特にLinux環境では、システムのアーキテクチャとの互換性をより明示的に指定する必要がある。<br> <br> .NET 8以降では、プラットフォームの選択において、AnyCPUではなく<u>アーキテクチャ</u>あるいは<u>ターゲットプラットフォーム</u>を指定することが推奨される。<br> <br> <syntaxhighlight lang="xml"> <!-- 方法1: 明示的にx64を指定 --> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <PlatformTarget>x64</PlatformTarget> </PropertyGroup> </syntaxhighlight> <br> <syntaxhighlight lang="xml"> <!-- 方法2: ターゲットプラットフォームを指定 --> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <RuntimeIdentifier>linux-x64</RuntimeIdentifier> </PropertyGroup> </syntaxhighlight> <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> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
インストール - .NET SDK
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse