2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【.NET 9.0.200】自己完結型の実行可能ファイルかつ単一ファイル実行可能ファイルビルドでちゃんと単一ファイルになった

Posted at

.NET 9.0.200 を対象にした記事です。

はじめに

.NET のビルドには .NET フレームワークなしでも動作するオプションと、実行ファイル(.exe)に関連アセンブリ(.dll)をひとつにまとめるオプションがあります。

これらは組み合わせが可能で、.NET ランタイムが不要かつ実行ファイルをひとつにまとめることができます。アプリを配布するうえで関連アセンブリをインストールする必要がなくなるため、個人的に需要があります。

ビルドコマンド

x64 向け出力

dotnet publish -c Release --self-contained true /p:PublishSingleFile=true --arch x64

x86 向け出力

dotnet publish -c Release --self-contained true /p:PublishSingleFile=true --arch x86

.NET 9.0.200 からアーキテクチャ指定(--arch x64)が必須になった?かもしれません。

以前のバージョン(.net 9.0.0 くらいまで?)

自己完結型の発行(ランタイム無しで動作する)の方は問題ないのですが、単一ファイル実行可能はひとつにまとまってくれないことがしばしばありました。ひとつにまとまるものと、まとまらないものの差がよくわかっていません。

  • 自分が作ったアセンブリ:まとまる
  • 標準ライブラリ:まとまる
  • x64 / x86 に分離されたライブラリ:まとまらない?

ランタイム指定されているアセンブリや署名の有無が関係するのでしょうか。
ちなみに今回のバージョン .net 9.0.200 でも単一ファイルにならないアセンブリがあるようです。

いずれにせよアプリとしては「動作する」ことが優先で、技術的に難しかったり副作用がある場合は単一ファイルにしない方針なのかもしれません。

おわりに

実は過去のバージョンでひとつにまとまっていた時期がありました(記憶だと ~ .net 5.0 preview5 あたりまで)。割と単一ファイル化は気まぐれで、今後も .net のバージョンが上がるとひとつにまとまらなくなるかもしれません。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?