.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  同樣可以,需要注意的是,如果項目引用了相關工具,需要自己做調整。

 

如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM