コンソール アプリケーションでAOT (Ahead On Time) によるネイティブビルドをする - C#

コンソールアプリケーションで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
iPentec all rights reserverd.