在.NET 6.0中釋出單個Exe檔案(PublishSingleFile)
阿新 • • 發佈:2022-03-23
假設我有一個簡單的“ 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>