コンソールアプリケーションでAOT(Ahead On Time) を有効にしてネイティブビルドする手順を紹介します。
概要
.NETアプリケーションはデフォルトでは、アプリケーションの実行時にコンパイルをするJIT (Just-In-Time)コンパイルで動作します。
実行時にILコードからネイティブ・コードにビルドされるため、32ビット/64ビットアプリケーションを共通にできたり、
クロスプラットフォームで動作するアプリを用紙できますが、一方でアプリケーション実行時にコンパイルされるため、オーバーヘッドがあり、
パフォーマンス面ではネイティブアプリケーションに比べ、若干劣る部分があります。
.NET 7で導入されたAOT(Ahead On Time)を利用すると事前にネイティブアプリケーションにコンパイルできるため、
ネイティブアプリケーションに近いパフォーマンスになります。この記事では、AOTを有効にしてビルドする手順を紹介します。
手順
コンソールアプリケーションを作成します。
プロジェクト作成ダイアログの[フレームワーク]の設定で ".NET 7.0" を選択します。
コンソールアプリケーションが作成できました。
プロジェクトファイルの設定
ソリューションエクスプローラーのウィンドウでプロジェクトのノードをクリックして選択します。プロジェクトのノードを右クリックします。
下図のポップアップメニューが表示されます。メニューの[プロジェクト ファイルの編集]の項目をクリックします。
プロジェクトファイルがコードで表示されます。
プロジェクトファイルを編集します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
PublishAot
タグを追記します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PublishAot>true</PublishAot>
</PropertyGroup>
</Project>
構成マネージャーの設定
構成マネージャーでx64プラットフォームのビルド構成を追加します。
追加の手順は
こちらの記事を参照してください。
ウィンドウ上部の[ソリューション プラットフォーム]のドロップダウンリストボックスの項目が"x64"に設定されていることを確認し、ビルドを実行します。
ビルド後、出力フォルダを開きます。下図のファイルが作成されています。通常のビルドよりファイル数がとても多いです。
デフォルトの設定でビルドした場合の出力ファイルは下図です。ファイル数が違うことがわかります。
プロジェクトの発行
プロジェクトを発行します。今回はフォルダに発行します。
プロジェクト発行先のディレクトリを確認します。ファイルが2つ出力されています。発行時に1つのファイルにまとめられて出力されるようです。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-11-20
作成日: 2022-11-20