🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

.NET CoreのPublish時に不要なDLLの出力を抑制する

※本エントリは以前Qiitaに投稿した記事です。
 また.NET Core 3.0 Prev6リリース時点での話です。

.NET Core 3.0 Preview6.0からPublishTrimmedを使用することでpublish(自己完結型展開)時に
不要なDLLの出力を抑制可能となりました。

実際にどの程度サイズが減るのか簡単に検証してみました。

PublishTrimmedオプションの使い方

以下のコマンドでpublish時にPublishTrimmedを有効化できます。

dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true

.csprojを編集する場合

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

+  <PropertyGroup>
+    <PublishTrimmed>true</PublishTrimmed>
+  </PropertyGroup>

</Project>

実際どのくらい減るの?

ConsoleApplication

dotnet new console -o publishSample
dotnet publish -r win-x64 -c Release
dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true


比較項目 PublishTrimmed無効 PublishTrimmed有効
ファイル数 226 64
サイズ(MB) 68.9 28.4

ここは公式Blog通りですね

ASP.NET Core MVC

dotnet new mvc -o publishSample
dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true


比較項目 PublishTrimmed無効 PublishTrimmed有効
ファイル数 358 260
サイズ(MB) 86.3 51.5

Blazor(ServerSide)

dotnet new blazorserverside -o publishSample
dotnet publish -r win-x64 -c Release
dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true


比較項目 PublishTrimmed無効 PublishTrimmed有効
ファイル数 358 260
サイズ(MB) 86.3 51.5

WPF

dotnet new wpf -o publishSample
dotnet publish -r win-x64 -c Release
dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true


比較項目 PublishTrimmed無効 PublishTrimmed有効
ファイル数 498 400
サイズ(MB) 153 88.5

※Resourceフォルダ含む

WinForm

dotnet new wpf -o publishSample
dotnet publish -r win-x64 -c Release
dotnet publish -r win-x64 -c Release /p:PublishTrimmed=true


比較項目 PublishTrimmed無効 PublishTrimmed有効
ファイル数 498 400
サイズ(MB) 153 88.5

※Resourceフォルダ含む

総評

  • 結構ダイエットできるっぽい

  • PublishSingleFileと併用した際ファイル数が減る分起動が早くなるので良いですね(微々たるものかもしませんが.)

以上