C#で単独ファイルで実行できるexeファイルをつくるdotnet.exeのオプション

C# コンピュータ
C#

C#のコンソールプロジェクトでコマンドプロンプト又はPowerShellから実行できる外部コマンドを作成しようと思います。通常にビルドを行うと、実行するバイナリファイルの.exe以外に実行に必要となる.dllファイルが生成されます。

複数のファイルがあるとインストールが面倒なので、単独のexeファイルをビルドしたいと思います。

まずコンソールプロジェクトを作成します。

# プロジェクトフォルダの作成⇒移動
mkdir プロジェクト名
cd プロジェクト名
# コンソールプロジェクト作成
dotnet new console

Hello Woldを出力するプロジェクトが作成されます。

今回はソースコードに手を加えずそのままビルドします。

# 出力先のフォルダ作成
mkdir output
# ビルド
dotnet publish -c Release -r win-x64 /p:PublishSingleFile=true --self-contained true -o output

出力先のフォルダ「output」を作成して、そちらに.exeファイルが出力されます。

見慣れぬオプションがありますが、そのうち調べたいと思います。

outputフォルダを除いてみると以下の様になりました。

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2025/03/11     13:34       67511682 StandAlone01.exe
-a----        2025/03/11     13:34          10540 StandAlone01.pdb

.exe以外に.pdbというファイルが出来上がっていますが、こちらはデバッグ用で実行するだけであれば不要なファイルです。

試しに.pdbファイルを削除し実行してみます。

rm .\output\*.pdb
.\output\StandAlone01.exe
# Hello, World! ←実行結果

実行出来ました。

単独の.exeファイルにするとファイルサイズが大きくなりますが、1つのファイルをコピーするだけでインストールすることが出来て便利だと思います。

GUI系のプロジェクトでも出来ると良いのですが、それは出来ないようです。

コメント