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系のプロジェクトでも出来ると良いのですが、それは出来ないようです。
コメント