訓練
模組
建立新的 .NET 專案並使用套件相依性 - Training
建立 .NET 專案,並了解如何在專案中新增套件及管理套件相依性。 使用 .NET Core CLI 與 NuGet 登錄,透過 Visual Studio Code 將程式庫與工具新增至您的 C# 應用程式。
本文描述如何在 Ubuntu 上安裝 .NET。 從 Ubuntu 22.04 開始,內建的 Ubuntu 摘要中提供大多數支援的 .NET 版本。 Ubuntu .NET backports 套件存放庫包含其餘支援的 .NET 版本。 如需可用版本的詳細資訊,請參閱支援的發行版本 (部分機器翻譯) 一節。
Canonical 已接管在 Ubuntu 上發佈 .NET。 從Ubuntu 22.04開始,Microsoft不再將適用於Ubuntu的 .NET散發至Microsoft套件存放庫。
警告
建議您選擇 Ubuntu 或 Microsoft 摘要取得 .NET 套件。 請勿混合來自多個套件存放庫的 .NET 套件,因為當應用程式嘗試解析特定版本的 .NET 時,會導致問題。
方法 | 優點 | 缺點 |
---|---|---|
套件管理員 (內建的 Ubuntu 摘要) |
|
|
套件管理員 (.NET backports Ubuntu 摘要) |
|
|
套件管理員 (Microsoft 摘要) |
|
|
指令碼 \ 手動擷取 |
|
|
將Ubuntu升級至22.04或更新版本? 請考慮先卸載 .NET。
如果您使用套件管理員從Microsoft套件存放庫安裝 .NET,則升級 Ubuntu 之後,最終會有套件混合問題。 現在,Canonical 會將 .NET 發佈至 Ubuntu 22.04 的套件摘要(和更新版本),套件管理員不會知道先前安裝的 .NET 版本。 套件無法升級至最新的 .NET。 首先,卸載它們,然後從 [Ubuntu 套件存放庫] 重新安裝它們。
當您的 Ubuntu 版本透過內建的 Ubuntu 摘要或 .NET backports Ubuntu 摘要支援 .NET 時,Canonical 會提供對那些 .NET 組建的支援,而且組建可能會針對不同的工作負載進行最佳化。 Microsoft 支援 Microsoft 套件存放庫摘要中的套件。
使用下列各節來判斷您應該如何安裝 .NET:
powershell
、mdatp
或 mssql
(部分機器翻譯)透過 Ubuntu 摘要安裝 .NET。 如需詳細資訊,請參閱下列頁面:
重要
如果您使用 .NET 8 SDK 和 Ubuntu 22.04,請瞭解 Canonical 所提供的 SDK 版本一律位於 .1xx 功能區段。 如果您想要使用較新的功能區版本,請使用 Microsoft 摘要來安裝 SDK。 請務必檢閱 .NET 套件在 Linux 上混合 (部分機器翻譯) 的文章資訊,以了解在存放庫摘要之間切換的影響。
如果您要安裝其他 Microsoft 存放庫以使用其他 Microsoft 套件 (例如 powershell
、mdatp
或 mssql
),則必須取消設定 Microsoft 存放庫所提供之 .NET 套件的優先順序。 如需如何取消設定套件優先順序的相關指示,請參閱我的 Linux 發行版本提供 .NET 套件,而且我想要使用這些套件 (部分機器翻譯)。
使用版本特定 Ubuntu 頁面上的指示。
如需您的 Ubuntu 版本所支援之 .NET 版本的詳細資訊,請參閱支援的發行版本 (部分機器翻譯) 一節。 如果您要安裝不支援的版本,請參閱註冊 Microsoft 套件存放庫 (部分機器翻譯)。
如果您的 Ubuntu 版本透過 Ubuntu 摘要支援 .NET,則您必須決定哪一個摘要應該安裝 .NET。 支援的發行版本一節提供一個表格,其中列出套件摘要中提供哪些 .NET 版本。
如果您想要從 Ubuntu 摘要取得 .NET 套件,您必須取消設定 Microsoft 存放庫所提供的 .NET 套件優先順序。 如需如何取消設定套件優先順序的相關指示,請參閱我的 Linux 發行版本提供 .NET 套件,而且我想要使用這些套件 (部分機器翻譯)。
針對 SDK 使用與您針對執行階段使用相同的套件來源。 建議您透過 Ubuntu 摘要安裝 .NET。 不過,如果您想要從另一個來源 (例如 Microsoft 套件存放庫安裝 .NET 以存取較高的 SDK 功能範圍),您應該解除安裝 .NET、設定套件管理員忽略 Ubuntu 摘要中的 .NET 套件,並從其他來源重新安裝它。
請檢閱決定如何安裝 .NET 一節中的其他建議。
如果您的 Ubuntu 版本提供您所需的 .NET 版本,請從 Ubuntu 摘要加以安裝。 否則,註冊 Microsoft 套件存放庫 (部分機器翻譯),然後從該存放庫安裝 .NET。 請檢閱支援的發行版本 (部分機器翻譯) 一節中的資訊。
如果無法取得您所需的 .NET 版本,請嘗試使用 dotnet-install 指令碼 (部分機器翻譯)。
建議您使用 APT 與 Microsoft 套件存放庫。 如需詳細資訊,請參閱向 Microsoft 套件存放庫註冊並安裝 (部分機器翻譯) 一節。
使用下列其中一種方式來安裝 .NET:
install-dotnet
指令碼安裝 .NET。 (部分機器翻譯)如果您想要自動安裝,請使用 Linux 安裝指令碼 (部分機器翻譯)。
如果您想要完全控制 .NET 安裝體驗,請下載 tarball 並手動安裝 .NET。 如需詳細資訊,請參閱手動安裝 (部分機器翻譯)。
如果您的 Ubuntu 版本提供您所需的 .NET 版本,請從內建摘要加以安裝。 請檢閱支援的發行版本 (部分機器翻譯) 一節中的資訊。
如果無法取得您所需的 .NET 版本,請嘗試使用下列其中一種方法安裝 .NET:
install-dotnet
指令碼安裝 .NET。 (部分機器翻譯)從 Ubuntu 24.04 上的 .NET 8 開始,Canonical 支援 IBM System Z 平台的 .NET。 Canonical 將支援延伸至其他 .NET 和 Ubuntu 版本。
透過內建的 Ubuntu 摘要安裝 .NET。 如需詳細資訊,請參閱下列頁面:
下表是目前支援的 .NET 版本清單,以及其支援的 Ubuntu 版本。 每個連結都會移至特定的 Ubuntu 版本頁面,其中包含如何針對該 Ubuntu 版本安裝 .NET 的特定指示。
Ubuntu | 支援的 .NET 版本 | Available in 內建的 Ubuntu 摘要 |
在 .NET backports Ubuntu 摘要中提供 |
在 Microsoft 摘要中提供 |
---|---|---|---|---|
24.10 | 9.0, 8.0 | 9.0, 8.0 | 無 | 無 |
24.04 (LTS) | 9.0, 8.0 | 8.0 | 9.0, 7.0, 6.0 | 無 |
22.04 (LTS) | 9.0, 8.0 | 8.0、7.0、6.0 | 9.0 | 8.0、7.0、6.0、3.1 |
20.04 (LTS) (部分機器翻譯) | 9.0, 8.0 | 無 | 無 | 8.0、7.0。 6.0、5.0、3.1、2.1 |
當 Ubuntu 版本到達其支援期間時,該特定 Ubuntu 版本就不再支援 .NET。
Canonical 支援該 Ubuntu 版本存留期的內建 Ubuntu 摘要中的 .NET 版本 (即使超過 Microsoft 提供的支援存留期),也為 .NET backports 套件存放庫中的 .NET 版本提供最佳支援 (但不會超過 Microsoft 提供的支援存留期)。
下列版本的 .NET ❌ 已不再支援:
Ubuntu .NET backports 套件存放庫提供 .NET 版本,內建的 Ubuntu 摘要沒有提供這些 .NET 版本。 支援的發行版本一節提供一個表格,其中列出套件摘要中提供哪些 .NET 版本。 Canonical 會維護此套件存放庫中所包含的套件,並提供最佳支援,不會超過 Microsoft 提供的支援存留期或特定 Ubuntu 版本的支援期間。
如需詳細資料,請參閱 Ubuntu .NET backports 套件存放庫的網頁檢視。
開啟終端機,並執行下列命令:
sudo add-apt-repository ppa:dotnet/backports
提示
您不需要呼叫 apt update
。
add-apt-repository
命令預設會執行此動作。
注意
Ubuntu .NET backports 套件存放庫與內建的 Ubuntu 摘要相容。 因此,您不需要將套件管理員設定為忽略內建 Ubuntu 摘要中的 .NET 套件。
如果您不想再從 Ubuntu .NET backports 套件存放庫取用套件,您可以將其取消註冊。 開啟終端機,並執行下列命令:
sudo add-apt-repository --remove ppa:dotnet/backports
重要
取消註冊 Ubuntu .NET backports 套件存放庫並不會解除安裝任何套件。
add-apt-repository(1)
公用程式已在大多數 Ubuntu 安裝上預先安裝。
如果您收到找不到 add-apt-repository
命令的錯誤訊息,您必須安裝提供此命令的 software-properties-common
套件。 開啟終端機,然後執行下列命令:
sudo apt update
sudo apt install software-properties-common
重要
這隻適用於 24.04 之前的 Ubuntu 版本。 從 Ubuntu 24.04 開始,Microsoft不再將套件發佈至Microsoft套件存放庫。 使用支援的散發套件數據表來判斷安裝 .NET 的最佳方式。
Microsoft 套件存放庫包含先前或目前您的 Ubuntu 版本支援的所有 .NET 版本。 如果您的 Ubuntu 版本提供 .NET 套件,您將必須取消設定 Ubuntu 套件的優先順序,並使用 Microsoft 存放庫。 如需如何取消設定套件優先順序的指示,請參閱我需要 Linux 發行版本未提供的 .NET 版本 (部分機器翻譯)。
重要
Microsoft 套件存放庫僅支援以 x64 架構為目標的 .NET 套件。 其他架構 (例如 Arm) 必須透過一些其他方式安裝 .NET,例如,透過安裝程式指令碼 (部分機器翻譯) 或手動安裝 (部分機器翻譯)。
Microsoft 套件存放庫中未提供預覽版本。 如需詳細資訊,請參閱安裝預覽版本 (部分機器翻譯)。
警告
建議您只使用一個存放庫來管理您的所有 .NET 安裝。 如果您先前已使用 Ubuntu 存放庫安裝 .NET,就必須清除 .NET 套件系統,並將 APT 設定為忽略 Ubuntu 摘要。 如需如何執行此操作的詳細資訊,請參閱我需要 Linux 發行版本未提供的 .NET 版本 (部分機器翻譯)。
您可以使用幾個命令來使用 APT 完成安裝。 請在安裝 .NET 之前,執行下列命令,以將 Microsoft 套件簽署金鑰新增至信任的金鑰清單,然後新增套件存放庫。
開啟終端機,然後執行下列命令:
# Get OS version info which adds the $ID and $VERSION_ID variables
source /etc/os-release
# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb
# Clean up
rm packages-microsoft-prod.deb
# Update packages
sudo apt update
提示
先前的腳本是針對Ubuntu撰寫的,如果您使用衍生散發套件,例如Linux Mint,可能無法運作。 和變數很可能$ID
$VERSION_ID
不會被指派正確的值,使命令的 wget
URI 無效。 對應 $ID
至散發套件 (例如 ,例如 ubuntu
),而 $VERSION_ID
對應至您想要取得套件的特定 Ubuntu 版本,例如 22.04 或 23.10。
例如,在 Ubuntu 22.04 $ID
上會是 ubuntu
, $VERSION_ID
而且 會是 22.04
。 URL 看起來會像: https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
。
您可以使用網頁瀏覽器並瀏覽至 https://packages.microsoft.com/config/ubuntu/ ,以查看哪些 Ubuntu 版本可用來作為 $repo_version
值。
使用 sudo apt install <package-name>
命令透過套件管理員安裝 .NET。 以您想要安裝的 .NET 套件名稱取代 <package-name>
。 例如,若要安裝 .NET SDK 9.0,請使用 命令 sudo apt install dotnet-sdk-9.0
。 下表列出目前支援的 .NET 套件(可能 因您的 Ubuntu 版本而異):
Products | 類型 | 套件 | |
---|---|---|---|
9.0 | ASP.NET Core | 執行階段 | aspnetcore-runtime-9.0 |
9.0 | .NET | 執行階段 | dotnet-runtime-9.0 |
9.0 | .NET | SDK | dotnet-sdk-9.0 |
8.0 | ASP.NET Core | 執行階段 | aspnetcore-runtime-8.0 |
8.0 | .NET | 執行階段 | dotnet-runtime-8.0 |
8.0 | .NET | SDK | dotnet-sdk-8.0 |
提示
如果您未建立 .NET 應用程式,請安裝 ASP.NET Core 執行階段,因為它包含 .NET 執行階段,同時也支援 ASP.NET Core 應用程式。
某些環境變數會影響 .NET 安裝之後的執行方式。 如需詳細資訊,請參閱 .NET SDK 和 CLI 環境變數 (部分機器翻譯)。
如果您透過套件管理員安裝 .NET,請使用與 apt-get remove
命令相同的方式來解除安裝:
sudo apt-get remove dotnet-sdk-6.0
如需詳細資訊,請參閱解除安裝 .NET (部分機器翻譯)。
.NET 的預覽版與候選版均無法在套件存放庫中取得。 您可以使用下列其中一種方式來安裝 .NET 的預覽版與候選版:
使用套件管理員來管理 .NET 的安裝時,如果您先前已安裝預覽版,可能會發生衝突。 套件管理員可能會將非預覽版理解為舊版 .NET。 若要安裝非預覽版本,請先解除安裝預覽版本。 如需解除安裝 .NET 的詳細資訊,請參閱如何移除 .NET Runtime 和 SDK (部分機器翻譯)。
如果您透過套件管理員安裝 .NET,您可以使用 apt upgrade
命令來升級套件。 例如,下列命令使用最新版本來升級 dotnet-sdk-9.0
套件:
sudo apt update
sudo apt upgrade dotnet-sdk-9.0
提示
如果您已在安裝 .NET 之後升級 Linux 發行版本,可能需要重新設定 Microsoft 套件存放庫。 執行您目前發行版本的安裝指示,以升級至 .NET 更新適用的套件存放庫。
從 Ubuntu 22.04 開始,您可能會遇到似乎只有一段 .NET 可用的情況。 例如,您已安裝執行階段和與 SDK,但在執行 dotnet --info
時,只會列出執行階段。 這種情況可能與使用兩個不同的套件來源有關。 內建的 Ubuntu 22.04 與 Ubuntu 22.10 套件摘要包含某些 .NET 版本,但並非全部,而您可能也已從 Microsoft 摘要安裝 .NET。 如需如何修正此問題的詳細資訊,請參閱針對與 Linux 上遺失檔案相關的 .NET 錯誤進行疑難排解 (部分機器翻譯)。
本節提供您在使用 APT 安裝 .NET 時可能遇到的常見錯誤相關資訊。
重要
使用套件管理員從 Microsoft 套件摘要安裝 .NET,僅支援 x64 結構。 Microsoft 套件摘要不支援其他結構,例如 Arm。
如需在沒有套件管理員的情況下安裝 .NET 的詳細資訊,請參閱下列其中一篇文章:
install-dotnet
指令碼來安裝 .NET。注意
此資訊僅適用於從 Microsoft 套件摘要安裝 .NET 時。
如果您收到類似找不到套件 {dotnet-package} 或某些套件無法安裝的錯誤訊息,請執行下列命令。
下列這組命令中有兩個預留位置。
{dotnet-package}
aspnetcore-runtime-8.0
。 這會在下列 sudo apt-get install
命令中使用。首先,嘗試清除套件清單:
sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
接著,嘗試再次安裝 .NET。 如果無法運作,您可以使用下列命令來執行手動安裝:
如果您使用 Ubuntu 23.10 或更新版本,請嘗試下列命令:
# Get OS version info which adds the $ID and $VERSION_ID variables
source /etc/os-release
# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
# Move the key to the appropriate place
sudo mv microsoft.asc.gpg $(cat /etc/apt/sources.list.d/microsoft-prod.list | grep -oP "(?<=signed-by=).*(?=\])")
# Update packages and install .NET
sudo apt-get update && \
sudo apt-get install -y {dotnet-package}
如果您使用 23.10 之前的 Ubuntu 版本,請嘗試下列命令:
# Define the OS version, name, and codename
source /etc/os-release
# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
# Set ownership
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
# Update packages and install .NET
sudo apt-get update && \
sudo apt-get install -y {dotnet-package}
安裝 .NET 套件時,您可能會看到類似 Failed to fetch ... File has unexpected size ... Mirror sync in progress?
的錯誤。 此錯誤可能表示 .NET 的套件摘要正在以較新的套件版本進行升級,而您應該稍後再試一次。 在升級期間,套件摘要不應超過 30 分鐘無法使用。 如果您持續收到此錯誤超過 30 分鐘,請在 https://github.com/dotnet/core/issues 中提出問題。
當您使用套件管理員安裝時,系統會為您安裝這些程式庫。 但是,如果您手動安裝 .NET 或發佈獨立式應用程式,就必須安裝這些相依性來執行應用程式:
您可以使用 apt install
命令來安裝相依性。 下列程式碼片段會示範如何安裝 zlib1g
程式庫:
sudo apt install zlib1g
如果 .NET 應用程式使用 System.Drawing.Common 元件, 則必須安裝 libgdiplus 。 如需詳細資訊,請參閱 僅限 Windows 上支援的 System.Drawing.Common。
您可以將 Mono 存放庫新增至您的系統 (英文),以安裝最新版的 libgdiplus。
訓練
模組
建立新的 .NET 專案並使用套件相依性 - Training
建立 .NET 專案,並了解如何在專案中新增套件及管理套件相依性。 使用 .NET Core CLI 與 NuGet 登錄,透過 Visual Studio Code 將程式庫與工具新增至您的 C# 應用程式。