由於同一台電腦可以安裝多個版本的 .NET Core SDK,每個版本的 SDK 都會包含完整的工具組、執行環境、組件庫與編譯器等等,所以蠻多人詢問過我這個問題:「當安裝了許多不同版本的 .NET Core SDK 之後,要如何才能使用舊版 dotnet 命令,執行 dotnet new 或 dotnet build 之類的命令。」這部分其實並不困難,只要設定 global.json 即可。
在 .NET Core 2.0 版以前,要查詢目前電腦所有安裝過的 SDK 版本,如果在 Windows 作業系統,可以透過控制台的「應用程式與功能」查看安裝過的 .NET Core SDK 版本,或是透過檔案總管開啟 C:\Program Files\dotnet\sdk 資料夾,查看有哪些版本。如果在 Linux 作業系統下,路徑則在 /usr/share/dotnet/sdk 目錄下。
但是從 .NET Core SDK 2.1 開始,預設的 dotnet 命令就包含了 dotnet --list-sdks 命令,直接可以列出所有已安裝過的版本。
查詢已經安裝過 SDK 版本號是非常重要的,當你想透過 global.json 切換 SDK 版本的時候,必須手動輸入這些已安裝的版本號。
首先,我們先來示範如何快速建立 global.json 檔案:
1. 先利用 dotnet new globaljson 快速建立這個檔案
- 預設這個檔案會記錄當前目錄要使用的 .NET Core SDK 版本
- 預設的 SDK 會等同於目前執行 dotnet 命令時所用的 SDK 版本一致
2. 然後將 global.json 檔案內的 "version" 修改為特定 SDK 版本即可
- 如下圖示
或者是你也可以利用 --sdk-version 參數,直接給定 SDK 版本,如下圖示:
dotnet new globaljson --sdk-version 2.1.805
請注意:在執行 dotnet 命令的時候,它會自動找尋當前目錄與上層目錄的 global.json 檔案,這裡的上層目錄會一直往上找,找到根目錄為止!如果都找不到 global.json 就會預設選用目前所有已安裝 .NET Core SDK 的最新版。
一般來說,每一個透過 .NET Core 開發的專案,都不太需要 global.json 檔案的存在,因為隨著每次 .NET Core 版本升級,可以讓該專案永遠以「最新版 SDK」進行建置或發行。但是如果你還是擔心會有破壞性更新出現的話,這時你就可以建立一個 global.json 定義檔,將使用的 .NET Core SDK 鎖定在特定版本,以確保應用系統的穩定。
相關連結