📢 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>
currentチャネルからSTSチャネルに変更されたことに注意する。<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 STS -version latest
  ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel LTS -version latest
   
   
  # .NET SDK 7.0.100をインストールする場合
  # .NET SDK 9.0.100をインストールする場合
  ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 7.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)をインストールする場合
  # .NET SDK 6.0.403 (LTS)をインストールする場合
  ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 6.0.403
  ./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 STS -version latest
  ./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>"
   
   
cd <.NET SDKのインストールディレクトリ>
  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:false
  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:false
  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:false -f:<.NETのターゲットフレームワークのバージョン  例: net7.0>
  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:false</code> (推奨)
* <code>--self-contained false</code> (推奨)
*: 実行ファイルに.NETランタイムを含めない。
*: .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>
単一のターゲットフレームワークを指定する場合、プロジェクトファイル (.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]]