ConsoleApp 如果要發佈單一執行檔,只需要如下圖勾選 “Produce Single File” 即可

勾選 Produce Single File 畫面

但我沒有圖片上的功能😥😥,所以才會寫這一篇文章筆記。(圖片來自於 Publishing C# Console App as a stand-alone executable,印象中也看過該選項)

眾所皆知,所有的使用者操作介面,背後都是一條條指令,只需要下達正確的命令也可以執行預期的行為。

了解指令最快的方式就是查找官方文件,Single-file deployment and executable 就說明了該如何發佈單一執行檔。

  1. 在 csproj 檔裡面添加
1
2
3
<PropertyGroup>
<PublishSingleFile>true</PublishSingleFile>
</PropertyGroup>
  1. 執行 dotnet publish 發佈時增加 -r <RID> 參數來指定 runtime
1
dotnet publish -r win-x64

如果執行環境本身裝有 runtime,可以透過 --sc|--self-contained [true|false] 參數使發佈時不帶有 runtime,讓程式變得更輕巧(此參數預設為 true)。

1
2
dotnet publish -r win-x64 --self-contained false
dotnet publish -r win-x64 --no-self-contained // 與前者相等

若不想要在 csproj 檔案設定,也可以這樣一步到位

1
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained false

若對 dotnet publish 指令感興趣可以自行閱讀 dotnet publish

  1. 執行後就只會產生 exe 與 pdb 檔案

這時如果不想要產生 pdb 檔案該怎麼辦?一樣可以透過 csproj 設定處理

1
<DebugType>embedded</DebugType>

添加完畢後,就會將 pdb 合併至 exe 裡面了。了解更多可至 C# Compiler Options that control code generation 與黑暗大的文章 .NET 知識高裝檢 - .pdb 檔、編譯最佳化與偵錯

這樣我們 publish 出來的結果就會是單一執行檔囉,可喜可賀🥳🥳