📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の7版が非表示) | |||
| 63行目: | 63行目: | ||
# RHELに.NETをインストールするには、Red Hat Subscription Managerを使用して登録する必要がある | # RHELに.NETをインストールするには、Red Hat Subscription Managerを使用して登録する必要がある | ||
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm | 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 | # SLE 15 | ||
sudo rpm -Uvh https://packages.microsoft.com/config/sles/15/packages-microsoft-prod.rpm | 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 | 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/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 | # openSUSE Leap 15 | ||
| 213行目: | 223行目: | ||
<br> | <br> | ||
.NET SDKをインストールする。<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をインストールする場合 | # 最新の.NET SDKをインストールする場合 | ||
./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel | ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version latest | ||
# .NET SDK | # .NET SDK 9.0.100をインストールする場合 | ||
./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version | ./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)をインストールする場合 | # .NET SDK 6.0.403 (LTS)をインストールする場合 | ||
./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel | ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version 6.0.423 | ||
<br> | <br> | ||
また、インストールする前に<code>-Dryrun</code>オプションまたは<code>--dry-run</code>オプションを付加して、インストールをシミュレートすることもできる。<br> | また、インストールする前に<code>-Dryrun</code>オプションまたは<code>--dry-run</code>オプションを付加して、インストールをシミュレートすることもできる。<br> | ||
# 最新の.NET SDKのインストールをシミュレートする場合 | # 最新の.NET SDKのインストールをシミュレートする場合 | ||
./dotnet-install.sh -Dryrun --install-dir <.NET SDKのインストールディレクトリ> -channel | ./dotnet-install.sh -Dryrun --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version latest | ||
<br> | <br> | ||
インストールの完了後、利用可能な.NET SDKを確認することができる。<br> | インストールの完了後、利用可能な.NET SDKを確認することができる。<br> | ||
| 249行目: | 275行目: | ||
バージョンによっては、追加でアンインストールしなければならない場合もある。<br> | バージョンによっては、追加でアンインストールしなければならない場合もある。<br> | ||
<br> | <br> | ||
以下の例では、.NETランタイム、および、.NET SDK(sdk、host、shared)を完全にアンインストールしている。<br> | 以下の例では、.NETランタイム、および、.NET SDK (sdk、host、shared) を完全にアンインストールしている。<br> | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
export DOTNET_UNINSTALL_PATH="<.NET SDKのインストールディレクトリ>" | |||
export RUNTIME_VERSION="<.NETランタイムのバージョン 例 : 7.0.10>"; \ | export RUNTIME_VERSION="<.NETランタイムのバージョン 例 : 7.0.10>"; \ | ||
export SDK_VERSION="<.NET SDKのバージョン 例 : 7.0.400>" | 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 "host/fxr/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/packs/Microsoft.NETCore.App.Host.linux-x64/$RUNTIME_VERSION"; \ | ||
rm -rf "packs/Microsoft.AspNetCore.App.Ref/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/packs/Microsoft.NETCore.App.Ref/$RUNTIME_VERSION"; \ | ||
rm -rf "packs/Microsoft.NETCore.App.Host.linux-x64/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION"; \ | ||
rm -rf "packs/Microsoft.NETCore.App.Ref/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/sdk-manifests/$RUNTIME_VERSION"; \ | ||
rm -rf "sdk/$SDK_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.All/$RUNTIME_VERSION"; \ | ||
rm -rf "sdk-manifests/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.AspNetCore.App/$RUNTIME_VERSION"; \ | ||
rm -rf "shared/Microsoft.AspNetCore.All/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/shared/Microsoft.NETCore.App/$RUNTIME_VERSION"; \ | ||
rm -rf "shared/Microsoft.AspNetCore.App/$RUNTIME_VERSION"; \ | rm -rf "$DOTNET_UNINSTALL_PATH/templates/$RUNTIME_VERSION" | ||
rm -rf "shared/Microsoft.NETCore.App/$RUNTIME_VERSION"; \ | |||
rm -rf "templates/$RUNTIME_VERSION" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 499行目: | 524行目: | ||
以下の例では、Linux x64向けとPinePhone向けにリリースビルドしている。<br> | 以下の例では、Linux x64向けとPinePhone向けにリリースビルドしている。<br> | ||
# Linux x64向け | # Linux x64向け | ||
dotnet publish -c:Release -r:linux-x64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained | dotnet publish -c:Release -r:linux-x64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained false | ||
# Linux Arch64向け (PinePhone、Raspberry Pi等) | # Linux Arch64向け (PinePhone、Raspberry Pi等) | ||
dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained | dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained false | ||
# Linux Arch64向け TFMの指定 | # Linux Arch64向け TFMの指定 | ||
dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained | dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained false -f:<.NETのターゲットフレームワークのバージョン 例: net8.0> | ||
<br> | <br> | ||
以下に、各オプションの意味を記載する。<br> | 以下に、各オプションの意味を記載する。<br> | ||
| 543行目: | 567行目: | ||
*: https://docs.microsoft.com/ja-jp/dotnet/core/deploying/single-file#api-incompatibility | *: https://docs.microsoft.com/ja-jp/dotnet/core/deploying/single-file#api-incompatibility | ||
*: <br> | *: <br> | ||
* <code>--self-contained | * <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> | <br> | ||
<u>リリースビルドする実行ファイルにデバッグ情報を付加しない場合は、プロジェクトファイル(.csproj拡張子)ファイルに以下の設定を追記する。(推奨)</u><br> | <u>リリースビルドする実行ファイルにデバッグ情報を付加しない場合は、プロジェクトファイル(.csproj拡張子)ファイルに以下の設定を追記する。(推奨)</u><br> | ||
| 568行目: | 606行目: | ||
* SelfContained | * SelfContained | ||
*: 発行するプロジェクトが自己完結型またはフレームワーク依存であるかを判断する。 | *: 発行するプロジェクトが自己完結型またはフレームワーク依存であるかを判断する。 | ||
*: <br> | |||
*: 自己完結型としてソフトウェアを発行する時、プラットフォーム固有の実行可能ファイルが生成される。 | |||
*: 出力されるpublishディレクトリには、.NETライブラリやターゲットランタイム等のソフトウェアの全てのコンポーネントが格納される。 | |||
*: この時、発行したソフトウェアは、他の.NETから分離されており、ローカルにインストールされた共有ランタイムを使用しない。 | |||
*: そのため、発行したソフトウェアを使用するユーザは、.NETのダウンロードおよびインストールを行うことは不要となる。 | |||
*: <br> | *: <br> | ||
* RuntimeIdentifier | * RuntimeIdentifier | ||
| 681行目: | 724行目: | ||
ターゲットフレームワークは、プロジェクトファイルで指定する。<br> | ターゲットフレームワークは、プロジェクトファイルで指定する。<br> | ||
<br> | <br> | ||
単一のターゲットフレームワークを指定する場合、プロジェクトファイル(. | 単一のターゲットフレームワークを指定する場合、プロジェクトファイル (.csprojファイル) の<code>TargetFramework</code>エレメントに記述する。<br> | ||
<br> | <br> | ||
以下の例では、ターゲットを.NET 6に変更している。<br> | 以下の例では、ターゲットを.NET 6に変更している。<br> | ||
| 805行目: | 848行目: | ||
<br> | <br> | ||
TFMの詳細は、[https://docs.microsoft.com/ja-jp/dotnet/standard/frameworks Microsoftの公式Webサイト]を参照すること。<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> | <br><br> | ||
| 847行目: | 935行目: | ||
<br><br> | <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__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]] | ||