溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

.NET Core 最小化發(fā)布

發(fā)布時(shí)間:2020-07-07 19:02:39 來(lái)源:網(wǎng)絡(luò) 閱讀:341 作者:張濤澤 欄目:編程語(yǔ)言

.NET Core 應(yīng)用最小化獨(dú)立部署發(fā)布,.NET Core 默認(rèn)應(yīng)用獨(dú)立發(fā)布,大概占用50m左右的空間,不同的系統(tǒng)大小有所區(qū)別。

.NET Core 的發(fā)布之前我也有所介紹,.NET Core 跨平臺(tái)發(fā)布(dotnet publish) 具體可以看這篇文章。

今天來(lái)看看.NET Core 最小化發(fā)布部署,可以節(jié)省一半左右的空間。

 

使用 dotnet new 命令創(chuàng)建應(yīng)用

然后打開 project.json 文件,然后將 frameworks 部分替換為以下內(nèi)容:

  "frameworks": {    "netstandard1.6": {}
  },

 

這有兩個(gè)用途:

它表示應(yīng)用只使用 .NET 標(biāo)準(zhǔn)庫(kù)。

刪除 "type": "platform" 屬性即表示將框架作為一套本地組件提供給應(yīng)用,而不是作為系統(tǒng)范圍內(nèi)的平臺(tái)包。

接著將 dependencies 部分替換為以下內(nèi)容:

 "dependencies": {   "NETStandard.Library": "1.6.0",   "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",   "Microsoft.NETCore.DotNetHostPolicy":  "1.0.1"
 },

接著創(chuàng)建 runtimes 部分,然后指定該應(yīng)用作為目標(biāo)的每個(gè)平臺(tái)的運(yùn)行時(shí)標(biāo)識(shí)符。 以下 runtimes 為 win10 64位 以及 ubuntu14.04 64位。

  "runtimes": {    "win10-x64": {},    "ubuntu.14.04-x64":{}
  }

然后運(yùn)行 dotnet restore 命令,以還原項(xiàng)目中指定的依賴項(xiàng)。

 

還原好以后運(yùn)行dotnet publish 命令發(fā)布對(duì)應(yīng)系統(tǒng)版本的應(yīng)用。

 

dotnet publish -r win10-x64
dotnet publish -r ubuntu.14.04-x64

也可增加 -c Release 指定為發(fā)布版本,如:dotnet publish -c Release -r win10-x64

如未指定Release ,默認(rèn)在Debug 目錄下。

下圖左邊為最小化發(fā)布,右邊是正常發(fā)布,都可以正常運(yùn)行。

.NET Core 最小化發(fā)布

 

將對(duì)應(yīng)標(biāo)識(shí)下的publish 文件夾復(fù)制到對(duì)應(yīng)系統(tǒng),即可運(yùn)行。

完整 project.json 文件如下。

.NET Core 最小化發(fā)布

{  "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":{}
  }
}

.NET Core 最小化發(fā)布

 

經(jīng)過(guò)探索,如果只是默認(rèn)控制臺(tái)輸出還可以減少體積,將 NETStandard.Library 引用替換為具體的引用,不過(guò)這個(gè)沒(méi)有多大必要。

更小化:

  "dependencies": {    "System.Runtime":"4.1.0",    "System.Console":"4.0.0",    "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",    "Microsoft.NETCore.DotNetHostPolicy": "1.0.1"
  },

此方法對(duì)ASP.NET Core  同樣可以,需要注意的是,如果項(xiàng)目引用了相關(guān)工具,需要自己做調(diào)整。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI