mieki256's diary



2026/01/12(月) [n年前の日記]

#1 [visualstudio][csharp] Visual Studio 2022でビルドするファイルを圧縮

Windows11 x64 25H2 + VisualStudio 2022 Community で C# を使ってGUIアプリ(スクリーンセーバのラッパー)を作っているけれど、自己完結型にするとランタイムも同梱されるせいか、生成された .exe のファイルサイズが100MBを越えてしまう。大き過ぎる。少しは小さくしたい…。

生成されるファイルを圧縮することが可能らしい。

_C#でWindowsフォームアプリのexeにdllを組み込む - Qiita

.csproj の最後のほう、</Project> の前のあたりに以下を追加する。<Choose> - </Choose> を使うと条件を満たした時だけその設定が有効になるそうで、以下の場合は Release時とPublish(公開)時にのみ設定が反映される。らしい。

  
  <Choose>
    <When Condition="'$(PublishProtocol)' != '' or '$(Configuration)' == 'Release'">
      <PropertyGroup>
        <PublishSelfContained>true</PublishSelfContained>
        <RuntimeIdentifier>win-x64</RuntimeIdentifier>
        <PublishSingleFile>true</PublishSingleFile>
        <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
        <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
        <PublishTrimmed>false</PublishTrimmed>
        <DebugType>none</DebugType>
        <DebugSymbols>false</DebugSymbols>
      </PropertyGroup>
    </When>
  </Choose>
</Project>

EnableCompressionInSingleFile を true にすることで圧縮がかかる。らしい。

他の指定の意味は以下。
メモリ上に展開したほうがたぶん速そうだけど、フォームを使っているアプリは動作しなくなったりする時もある、とAI君が言っている。

また、トリミングもすると更にファイルサイズを縮小できるらしいが、不要だと思われる部分を削除しながら処理するそうで、その結果、これまたフォームを使っているアプリなどは動かなくなる場合が多いらしい…。CLIアプリ等ならともかく、GUIアプリならやめておいたほうが良さそう…。

何にせよ、上記の指定で .exe は100MB以上あったのが 48MB ぐらいになってくれた。まだ大き過ぎる気もするけれど、100MB超えよりはマシだろう。

ただ、起動時に少し待たされるようになった。圧縮されているファイルを展開しているからだろうけど…。

以上です。

過去ログ表示

Prev - 2026/01 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project