首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0010. Ubuntu 自動安裝 dotnet SDK 與 dotnet Runtime 版本不相容問題

日期:2024年 07月 13日

標籤: DotNETRuntime DotNETSDK Asp.NET Core Web MVC Linux Ubuntu Snapcraft

摘要:資訊筆記


應用所需:1. Ubuntu 22.04 機器
解決問題:1. Linux 上使用微軟提示的自動安裝 dotnet 指令,造成 dotnet runtime 不相容
     2. 舊版的 dotnet SDK 、 dotnet Runtime 不相容
基本介紹:本篇分為 3 大部分。
第一部分:問題說明
第二部分:自動安裝解法 - Snapcraft
第三部分:舊版導致不相容解法 - 全部移除






第一部分:問題說明

Step 1: 微軟的建議

進入MSDN -> 開始使用 -> 安裝方式 -> 在 Linux 上安裝 -> Ubuntu -> 安裝
在中間一點的地方會出現 【安裝 SDK】,以下執行指令通常情況下是正常的:

sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0




Step 2: 問題的發生

但實際安裝時,仍有可能造成異常,這通常是由於包管理器的源配置或包的依賴關係造成的。
※提供來源者(微軟)依賴設定配置錯誤是有可能發生的


第二部分:自動安裝解法 - Snapcraft

Step 1: Snapcraft 簡介

Snaps官網,以下來自於關網 About:

Snaps are app packages for desktop, cloud and IoT that are easy to install, secure, 
cross‐platform and dependency‐free. 
Snaps are discoverable and installable from the Snap Store, the app store for Linux with an audience of millions.


大意說: Snaps 有百萬用戶,適合在 Linux 上可容易安裝套件、安全、跨平台無依賴關係
其中我們要用 Snapcraft 來構建,在這邊 Snap 的套件都是穩定版本的


Step 2:首頁搜尋

可在首頁輸入以下,目的是解決 dotnet SDK 與 dotnet runtime 套件不相容的問題

.NET Core SDK




Step 3:選擇套件

選擇下圖 .NET Core SDK 套件


Step 4:選擇套件版本

右上角可以選擇當前版本,這裡只會有 Stable 穩定版的套件


Step 5:複製指令 - 安裝

Ctrl + C 複製

sudo snap install dotnet-sdk --classic



到 Ubuntu 安裝如下:


Step 6:檢查 Dotnet 資訊

輸入以下,可以發現沒有再回報不相容的錯誤

dotnet --info




Step 7:建置專案

找一個 Asp.net Core 的專案進行建置,可正常編譯

dotnet build -o publish




第三部分:舊版導致不相容解法 - 全部移除

Step 1: 完整刪除的指令碼

如果無法在 第二部分 Step 5. 中執行,可以先將所有已安裝的 dotnet SDK 、 dotnet Runtime 移除
以下為刪除指令:

sudo apt remove dotnet-sdk* dotnet-host* dotnet*
sudo apt remove aspnetcore*
sudo apt remove netstandard*
sudo apt remove dotnet-host*
sudo apt purge dotnet-sdk* dotnet-host* dotnet*
sudo rm -f /etc/apt/sources.list.d/mssql-release.list
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo rm /etc/apt/sources.list.d/microsoft-prod.list.save
sudo apt update


所有 SDK 清空後,必定可以正常安裝 SDK 、 Runtime
輸入以下查看:

dotnet --list