1. 程式人生 > >關於.net core程序的部署

關於.net core程序的部署

lob uri rem master doc sel upd 最終 ive

最近發布.net core程序的時候,發現它是可以獨立部署的,它支持如下兩種部署方式:

  • 依賴框架的部署FDD。只發布我們的程序,運行前用戶需要手動安裝.net core runtime。
  • 獨立部署SCD。發布我們的程序和.net core runtime,即我們的程序可以運行在沒有安裝..net core runtime的機器上。

大多數時候,我們采用的是FDD模式,這樣發布的東西比較少,就幾個dll就夠了,並且能夠跨平臺,經常是windows版本寫好的拿到linux上直接運行,非常方便。

一個簡單的示例如下: dotnet publish --self-contained -r win-x64

主要是加入了--self-contained指令,另外,由於FDD模式發布的是原生程序,因此還需要用-r指定運行平臺。

這種方式下,由於將runtime一並發布了,發布的程序占用空間較大,我試了一下,大概有60m,壓縮後也有28m。不過有人發布了一個程序IL Linker,它可以分析程序實際依賴的dll,將沒有使用到的dll從打包中剔除,號稱可以將體積縮小一半。

需要註意的是,即使是以獨立方式發布的.net core程序,也不一定能在對方的機器上運行還需要滿足..net core運行環境才行,具體可以參考官方文章Windows 上 .NET Core 的決條件。簡單的來講,對於低版本的windows(如win7),需要如下兩個條件:

  • VC 2015 RunTime
  • Windows補丁DB2999226,可能還需要KB2533623

另外,微軟也在開發一個大招AOT CoreRT,類似之前提的.net native,簡單的來書就是通過AOT將.net core程序直接編譯成native程序,園子裏有人體驗過,最終發布的一個asp.net core程序也不到4m,可以說非常苗條了,並且native程序理論上也可以提升啟動速度,希望微軟能早日完成這個項目。

參考文章:

  • .NET Core 應用程序部署
  • Windows 上 .NET Core 的決條件

關於.net core程序的部署