備忘録

備忘録

.NET Coreで実行ファイル1つだけを出力する方法

2024/01/22 追記

FDDは未知の原因不明なエラーが発生する場合があります。
何か特別な理由が無い限りはSCDを推奨します。

Ⅰ. はじめに

タイトルの通り「.NET Coreで実行ファイル1つだけを出力する方法」です。

FDDはFramework-dependent deploymentsの事です。
SCDはSelf-contained deploymentsの事です。

Ⅱ. 環境

  • .NET Core 3.0以上必須

※.NET 5以上についてはこの記事で触れません

Ⅲ. やり方1(csprojを変更しない場合)

FDDの場合

dotnet publish -c Release -r win-x64 --self-contained false /p:PublishSingleFile=true

SCDの場合

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

Ⅳ. やり方2(csprojを変更する場合)

FDDの場合

1. csprojを変更する
<PropertyGroup>
  <PublishSingleFile>true</PublishSingleFile>
</PropertyGroup>
2. ビルドする
dotnet publish -c Release -r win-x64 --self-contained false

SCDの場合

1. csprojを変更する
<PropertyGroup>
  <PublishSingleFile>true</PublishSingleFile>
</PropertyGroup>
2. ビルドする
dotnet publish -c Release -r win-x64 --self-contained true

その他

Q. ファイルサイズを小さくしたい

A. PublishTrimmed オプションを付けると不要なDLLを除くことが出来ます。
つまり、ファイルサイズが小さくなります。
※SCDでのみ有効です。※2019/07/05時点
※.NET Core 3.0 preview 6以上必須

dotnet publish -r <rid> /p:PublishTrimmed=true /p:PublishSingleFile=true

Q. 起動速度を高速化したい

A. PublishReadyToRun オプションを付けると「起動速度だけ」高速化出来ます。
PublishTrimmedと併用可能です。
※SCDでのみ有効です。※2019/07/05時点
※.NET Core 3.0 preview 6以上必須

dotnet publish -r <rid> /p:PublishTrimmed=true /p:PublishReadyToRun=true /p:PublishSingleFile=true