1. 程式人生 > >dotnet core瘦身發布

dotnet core瘦身發布

runtime cor 部署 windows get published imp ppp temp

需要安裝nuget包Microsoft.Packaging.Tools.Trimming
然後利用如下命令發布
dotnet publish -r win10-x64 -c release --self-contained true /p:TrimUnusedDependencies=true
發布完成之後,實際上還是有不少dll文件,只不過由原來的200多個減少了70多個。

然後還有個瘦身的方法
項目地址https://github.com/dgiagio/warp
國內這毛線網可能有點慢

關於windows摘錄如下

Windows

Create a simple console application

PS C:\Users\Diego\Devel> mkdir myappPS C:\Users\Diego\Devel> cd myappPS C:\Users\Diego\Devel\myapp> dotnet new consolePS C:\Users\Diego\Devel\myapp> dotnet runHello World!PS C:\Users\Diego\Devel\myapp>

Publish the application with native installer for win10-x64

runtime

PS C:\Users\Diego\Devel\myapp> dotnet publish -c Release -r win10-x64

The application should be published to bin/Release/netcoreapp2.1/win10-x64/publish/

Download warp-packer

If you save warp-packer in a directory in your PATH, you only need to download it once.

PS C:\Users\Diego\Devel\myapp> [Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" ; Invoke-WebRequest https://github.com/dgiagio/warp/releases/download/v0.3.0/windows-x64.warp-packer.exe -OutFile warp-packer.exe

Create your self-contained application

PS C:\Users\Diego\Devel\myapp> .\warp-packer --arch windows-x64 --input_dir bin/Release/netcoreapp2.1/win10-x64/publish --exec myapp.exe --output myapp.exe

Run your self-contained application

PS C:\Users\Diego\Devel\myapp> .\myapp.exeHello World!PS C:\Users\Diego\Devel\myapp>

More information about your self-contained application

PS C:\Users\Diego\Devel\myapp> "{0:N2} MB" -f ((Get-Item myapp.exe).Length / 1MB)28.51 MB


坑爹的情況是,這個warp程序會一直下載不下來,然後嘗試文檔中提到的用power shell下載
在powsershell 中執行如下語句
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls" ; Invoke-WebRequest https://github.com/dgiagio/warp/releases/download/v0.3.0/windows-x64.warp-packer.exe -OutFile warp-packer.exe
孬好速度比瀏覽器要一點,下載完後,準備打包

按照指令格式,拼裝指令,示例如下,然後就可以將exe和DLL打包成1個exe了

PS E:\DijingTools\Dijing.Update> .\warp-packer.exe --arch windows-x64 --exec Dijing.Update.exe --input_dir .\bin\release\netcoreapp2.1\win10-x64\publish\ --output Dijing.Update.exe


然後測試一下exe,可以正常,這樣部署的時候,就不用帶很多程序了

PS E:\DijingTools\Dijing.Update\bin\Debug\netcoreapp2.1\publish> .\Dijing.Update.exe http://zhcto.com/packa ges/106SP7fc10b15-8dd8-4ecc-ba02-f52a833b3783.zip 文件夾E:\DijingTools\Dijing.Update\bin\Debug\netcoreapp2.1\publish\temp創建成功 升級包開始下載 升級包下載中...3833,157757,2% 升級包下載中...13587,157757,8% 升級包下載中...46063,157757,29% 升級包下載中...71479,157757,45% 升級包下載中...137015,157757,86% 升級包下載中...140667,157757,89% 升級包下載中...157757,157757,100% 升級包下載完成 檢測到升級包已存在 升級包解壓完成 升級文件遍歷完成,文件個數為:5 升級包文件覆蓋完成 臨時文件夾刪除完成

程序啟動成功 PS E:\DijingTools\Dijing.Update\bin\Debug\netcoreapp2.1\publish>



還有一種CoreLR的東西,也可以瘦身,不過註入關系得自己寫個表,就懶得弄了

dotnet core瘦身發布