Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[.Net Core 與 .Net Standard 實戰教學][Lab][02-2]了解Self Contained Deployment(SCD)執行(發佈)模式

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在上一個Lab:了解Framework Dependent Deployment(FDD)執行(發佈)模式建立了一個.Net Core Console程式, 並且用發佈看產出的結果 - 最後得到的是FDD的執行模式。

在這一個lab將會沿用上一個lab的Solution接下去建立另外一種執行模式,Self Contained Deployment (SCD)。

上個lab的最後成果的程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab2/1-fdd-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab2/1-fdd-finish
  2. 從github release下載:下載鏈接

操作步驟

這個lab裡面會切分以下幾個階段:

  • 建立另外一個Net Core Console
  • 修改csproj變成SDC模式並且發佈Windows版本
  • 修改發佈設定 - 建立linux版本

建立另外一個Net Core Console

直接在上一個lab建立出來的solution點 右鍵,然後選擇 Add -> New Project
image
在 新增視窗 裡面 選擇 .Net Core ->Console App (.Net Core)
  1. nameSCD
image
為了 更好區分我們之前建立的FDD專案,打開Program.cs,然後調整 一下輸出的內容 改成

Console.WriteLine("Hello World From SCD!");

最後內容如下:

image

修改csproj變成SDC模式並且發佈Windows版本

SCD的專案點 右鍵然後選擇 Edit SCD.csproj
image
在 打開的 編輯器 裡面,在TargetFramework下面加入:
<RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
image
輸入的值為RDI,有什麼值可以使用可以參考:https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
題外話:.Net Core 2.0之後才有所謂的Portable版本,例如linux-x64 - 避免需要列出很多不同的linux distro。
SCD.csproj右鍵,然後選擇Publish
image
在跳出來的視窗:
  1. 選擇 中間的 Folder
  2. 選擇 右下角 的 publish
image
這個時候會開始 發佈,注意到 target runtime 的部分(這邊是win-x64),可以打開最後發佈的結果(點Target Location的鏈接),會看到熟悉的exe檔案
imageimage

修改發佈設定 - 建立linux版本

回到 VS 的發佈畫面,可以點下:
  1. Settings
  2. 在開啟的畫面選擇Target Runtime
  3. 改成Linux-x64
imageimage
這個時候在按一次 publish
檢查 產出 內容 會發現和剛剛 target win-x64的時候不一樣,也沒有exe檔案
image

完整程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab2/2-scd-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab2/2-scd-finish
  2. 從github release下載:下載鏈接

參考資料

官方介紹 SCD
https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-vs#simpleSelf
RDI - 指定的target runtime
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog

如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus