Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps:C#, Asp .net Mvc、Azure、Docker、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
comments powered by Disqus