發行與部署.NET Core應用程式 - 2

by vivid 24. 六月 2020 03:22

.NET Magazine國際中文電子雜誌
作 者:許薰尹
審 稿:張智凱
文章編號:
N200622002
出刊日期: 2020/6/24

在《發行與部署.NET Core應用程式》一文中,介紹.NET Core主控台應用程式(Console Applicaiton)發行與部署的細節,本文將延續這個主題,看看在Visual Studio 2019發行ASP.NET Core MVC應用程式的設定與結果。

建立ASP.NET Core網站應用程式專案

首先我們來看看,如何使用「與 Framework 相依的部署(Framework-dependent deployment)」來發行ASP.NET Core網站應用程式範本專案。啟動Visual Studio 2019開發環境。從Visual Studio開發工具「File」-「New」-「Project」項目,在「Create a New Project」對話盒中,選取「ASP.NET Core Web Application」範本。請參考下圖所示:

clip_image002

圖 1:建立ASP.NET Core 應用程式專案。

在「Configure your new project」對話盒中,設定專案名稱與專案存放路徑,然後按下「Create」鍵,請參考下圖所示:

clip_image004

圖 2:設定專案名稱與專案存放路徑。

在「Create a new ASP.NET Core Web Application」對話盒中,確認左上方的清單選取「.NET Core」,右上方的清單ASP.NET Core版本為「ASP.NET Core 3.x」,選取下方的「Web Application (Model – View - Controller」樣版專案,勾選「Configure for HTTPS」、清除勾選「Enable Docker Support」核取方塊,確定右方的「Authentication」項目設定為「No Authentication」,然後按下「Create」按鈕建立專案,請參考下圖所示:

clip_image006

圖 3:選取下方的「Web Application (Model – View - Controller)」樣版專案。

選取Visual Studio 2019開發工具「Build」-「Build Solution」項目編譯目前的專案。接著按「CTRL」+「F5」組合鍵來執行網站應用程式,此時會啟動瀏覽器,以及開發用的IIS Express伺服器,自動指定一個埠號(port)來執行網站應用程式。執行結果參考如下:

clip_image008

圖 4:執行範本專案。

使用Visual Studio 2019發行專案

從「Solution Explorer」視窗 ,「MyWebApp」專案名稱上方按滑鼠右鍵,從快捷選單選擇「Publish」選項,請參考下圖所示:

clip_image010

圖 5:發行專案。

在「Pick a publish target」視窗中,選取「Folder」發行到指定的資料夾,請參考下圖所示:

clip_image012

圖 6:發行到資料夾。

點選「Pick a publish target」視窗中的「Advanced...」,可以進一步設定發行的細節,請參考下圖所示:

clip_image014

圖 7:發行「Portable」。

在「Publish」發行視窗中設定以下項目,然後按下「Save」按鈕:

· 「Configuration」:使用「Release」組態模式來發行。

· 「Target Framework」:設定「目標Framework」為「.netcoreapp 3.1」。

· 「Target Locaiton」 :發行結果要輸出的資料夾。

· 「Deployment Mode」:專案預設部署模式為「與 Framework 相依(Framework-dependent)」

· 「Target Runtime」:設定為「Portable」,發行結果可運行在相容的機器上。

· 勾選「Remove additional files at destination」項目,如此每次發行時,不需要手動刪除前一次部署的檔案。

回到「Pick a publish target」視窗,然後點選「Create Profile」按鈕,請參考下圖所示:

clip_image016

圖 8:建立Profile。

在「Publish」發行視窗中,直接點選「Publish」按鈕進行發行,請參考下圖所示:

clip_image018

圖 9:發行專案。

發行的資料夾內會產生一個平台專屬的執行檔(platform-specific executable,MyWebApp.exe),以及跨平臺二進位檔(cross-platform binary,MyWebApp.dll與MyWebApp.Views.dll),不含「wwwroot」資料夾中的靜態檔案,所有檔案加起來也只有幾百KB大小。

clip_image020

圖 10:專案發行的結果。

若要測試網站應用程式發行的結果是否能正常運作,可以開啟命令提示字元,執行發行資料夾中的「MyWebApp.exe」檔案,預設會啟動網站伺服器,接聽「5000」與「5001」埠,請參考下圖所示:

clip_image022

圖 11:測試發行結果。

開啟瀏覽器,輸入以下網址:

http://localhost:5000

看看瀏覽器是否能正常呈現網站應用程式,請參考下圖所示:

clip_image024

圖 12:測試發行的網站。

自封式部署(Self-contained deployment)

讓我們試著將「Deployment Mode」設定為「Self-contained」,再進行網站應用程式的發行,在「Publish」視窗中,選取「Edit」項目,在「Profile Settings」視窗中設定「Deployment Mode」為「Self-contained」自封式部署,並指定「Target Runtime」為「win-x64」,請參考下圖所示:

clip_image026

圖 13:「Deployment Mode」設定為「Self-contained」。

檢視「publish」資料夾,其中共有362個檔案,網站的程式碼將編譯在「MyWebApp.dll」與「MyWebApp.Views.dll」(檢視程式碼)之中,請參考下圖所示:

clip_image028

圖 14:自封式部署(Self-contained deployment)。

產生單一檔案 (Produce a single file)

.NET Core 3新增一個產生單一檔案 (Produce a single file)功能,能夠將發行結果,包含你的應用程式、相依程式,與.NET Core runtime等等全部打包成一個可執行檔案。在「Profile Settings」視窗,勾選「產生單一檔案 (Produce a single file)」,請參考下圖所示:

clip_image030

圖 15:產生單一檔案 (Produce a single file)。

發行完,檢視「publish」資料夾,Visual Studio 2019會將相依檔案全部打包在同一個單一執行檔之中,檔案的大小為「84.7MB」,請參考下圖所示:

clip_image032

圖 16:產生單一檔案 (Produce a single file)。

修剪未使用的組件(Trim unused assemblies)

「修剪未使用的組件(Trim unused assemblies)」也是.NET Core 3新增的功能,但目前還在預覽版(Preview)。在發行時勾選「修剪未使用的組件(Trim unused assemblies)」,將未使用到的程式移出輸出的組件,請參考下圖所示:

clip_image034

圖 17:修剪未使用的組件(Trim unused assemblies)。

發行後,檢視檔案大小比沒有勾選「修剪未使用的組件(Trim unused assemblies)」選項的發行方式少了一半,約「44.7MB」,請參考下圖所示:

clip_image036

圖 18:修剪未使用的組件(Trim unused assemblies)。

啟用ReadyToRun編譯

「啟用ReadyToRun編譯(Enable Ready ToRun compilication)」選項,可以將程式編譯成ReadyToRun (R2R) 格式,發行的結果將包含原生程式碼(Native Code),可以改善應用程式啟動的時間。

clip_image038

圖 19:啟用ReadyToRun編譯(Ready to Run)。

勾選「啟用ReadyToRun編譯(Enable Ready ToRun compilication)」選項後發行,發行結果的檔案較上個設定大一些,請參考下圖所示,這是因為其中同時包含了原生程式與中介(IL)程式。

clip_image040

圖 20:啟用ReadyToRun編譯(Ready to Run)。

Tags:

.NET Magazine國際中文電子雜誌 | .NET Core | C# | 許薰尹Vivid Hsu

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List