1. 程式人生 > >在.NET Core 3.0中釋出單個Exe檔案(PublishSingleFile)

在.NET Core 3.0中釋出單個Exe檔案(PublishSingleFile)

假設我有一個簡單的“ Hello World”控制檯應用程式,我想傳送給朋友來執行。朋友沒有安裝.NET Core,所以我知道我需要為他構建一個獨立的應用程式。很簡單,我只需在專案目錄中執行以下命令:

dotnet publish -r win-x64 -c Release --self-contained

朋友是多少位的作業系統,你就標記要釋出成什麼樣子的, --self-contained這個標籤的解釋自包含,就是說你的相關依賴項與你的應用程式不掛鉤,將會產生依賴,缺少一個dll就會缺胳膊少腿。所以這樣你就必須將整個資料夾都託給朋友。 

 看看資料夾裡的情況,它會發生什麼?293個檔案,這直接將.NET Core的執行時也打包了,這非常Nice!不過我這檔案真的很多,我很難受!朋友會說:這什麼鬼?exe在哪裡?

 

 所以.NET Core給我們提供了一個命令標誌, dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 您會注意到,我們不再指定自包含標誌。這是因為假設如果您將其打包為單個exe,則將需要它的所有依賴關係。這一定說得通。我們試著去執行該命令。隨後開啟publish檔案,我們發現!這也太乾淨了吧! 但是檔案還是有點大呀,這可只是一個Hello World呀!,我們在思考如何進行優化大小,當然這一點微軟也給我們考慮到了!!!

使用命令 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true 我們拭目以待吧。

 

 

不通過DotCli釋出可以修改一下專案檔案,再通過VisualStudio釋出!

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>//釋出平臺
    <PublishSingleFile>true</PublishSingleFile>//是否單個exe
  </PropertyGroup>
  <PropertyGroup>
    <PublishTrimmed>true</PublishTrimmed>//啟用壓縮
  </PropertyGroup>
</Project>

祝.NET Core愈來愈好!