.NET Core 應用最小化獨立部署發佈,.NET Core 預設應用獨立發佈,大概占用50m左右的空間,不同的系統大小有所區別。 .NET Core 的發佈之前我也有所介紹,.NET Core 跨平臺發佈(dotnet publish) 具體可以看這篇文章。 今天來看看.NET Core 最小化 ...
.NET Core 應用最小化獨立部署發佈,.NET Core 預設應用獨立發佈,大概占用50m左右的空間,不同的系統大小有所區別。
.NET Core 的發佈之前我也有所介紹,.NET Core 跨平臺發佈(dotnet publish) 具體可以看這篇文章。
今天來看看.NET Core 最小化發佈部署,可以節省一半左右的空間。
使用 dotnet new 命令創建應用
然後打開 project.json 文件,然後將 frameworks 部分替換為以下內容:
"frameworks": { "netstandard1.6": {} },
這有兩個用途:
它表示應用只使用 .NET 標準庫。
刪除 "type": "platform" 屬性即表示將框架作為一套本地組件提供給應用,而不是作為系統範圍內的平臺包。
接著將 dependencies 部分替換為以下內容:
"dependencies": { "NETStandard.Library": "1.6.0", "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", "Microsoft.NETCore.DotNetHostPolicy": "1.0.1" },
接著創建 runtimes 部分,然後指定該應用作為目標的每個平臺的運行時標識符。 以下 runtimes 為 win10 64位 以及 ubuntu14.04 64位。
"runtimes": { "win10-x64": {}, "ubuntu.14.04-x64":{} }
然後運行 dotnet restore 命令,以還原項目中指定的依賴項。
還原好以後運行dotnet publish 命令發佈對應系統版本的應用。
dotnet publish -r win10-x64 dotnet publish -r ubuntu.14.04-x64
也可增加 -c Release 指定為發佈版本,如:dotnet publish -c Release -r win10-x64
如未指定Release ,預設在Debug 目錄下。
下圖左邊為最小化發佈,右邊是正常發佈,都可以正常運行。
將對應標識下的publish 文件夾複製到對應系統,即可運行。
完整 project.json 文件如下。
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": { "NETStandard.Library": "1.6.0", "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", "Microsoft.NETCore.DotNetHostPolicy": "1.0.1" }, "frameworks": { "netstandard1.6": {} }, "runtimes": { "win10-x64": {}, "ubuntu.14.04-x64":{} } }
經過探索,如果只是預設控制台輸出還可以減少體積,將 NETStandard.Library 引用替換為具體的引用,不過這個沒有多大必要。
更小化:
"dependencies": { "System.Runtime":"4.1.0", "System.Console":"4.0.0", "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", "Microsoft.NETCore.DotNetHostPolicy": "1.0.1" },
此方法對ASP.NET Core 同樣可以,需要註意的是,如果項目引用了相關工具,需要自己做調整。
如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。