📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

702行目: 702行目:
ターゲットフレームワークは、プロジェクトファイルで指定する。<br>
ターゲットフレームワークは、プロジェクトファイルで指定する。<br>
<br>
<br>
単一のターゲットフレームワークを指定する場合、プロジェクトファイル(.csproj)の<code>TargetFramework</code>エレメントに記述する。<br>
単一のターゲットフレームワークを指定する場合、プロジェクトファイル (.csprojファイル) の<code>TargetFramework</code>エレメントに記述する。<br>
<br>
<br>
以下の例では、ターゲットを.NET 6に変更している。<br>
以下の例では、ターゲットを.NET 6に変更している。<br>
826行目: 826行目:
<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>