概述,.NET Core應用程序可以創建三種類型的部署:FDD SCD FDE
-
框架依賴的部署(FDD)。顧名思義,框架依賴的部署(FDD)依賴於目標系統上是否存在.NET Core版本。由於.NET Core已經存在,因此您的應用程序在不同的.NET Core版本中進行移植。您的應用程序僅包含其自己的代碼以及.NET Core庫之外的任何第三方依賴項。FDD包含.dll文件,可以通過使用dotnet命令行啟動這些文件。
例如,dotnet app.dll
運行名為的應用程序app
。
-
自包含的部署(SCD)。與FDD不同,自包含部署(SCD)不依賴於目標系統上共享組件的存在。所有組件,包括.NET Core庫和.NET Core運行時,都包含在應用程序中
-
依賴框架的可執行文件(FDE)。生成在目標平台上運行的可執行文件。與FDD相似,框架相關的可執行文件(FDE)是特定於平台的,並且不是自包含的。這些部署仍然依賴於存在共享的系統范圍的.NET Core版本來運行。可以通過調用已發布的可執行文件來運行您的應用程序,而無需
dotnet
直接調用該實用程序(和FDD的主要區別)
1.框架依賴的部署(FDD)
對於FDD,僅部署應用程序和第三方依賴項。應用將使用目標系統上存在的.NET Core版本,
這是針對.NET Core的.NET Core和ASP.NET Core應用程序的默認部署模型。
FDD的優點:
-
不必預先定義你的應用程序的目標操作系統。
-
部署包的很小。只會部署應用程序及其依賴項,而不部署.NET Core本身。
-
除非被覆蓋,否則FDD將使用目標系統上安裝的最新的.NET Core運行時。這樣應用程序可以使用.NET Core運行時的最新修補版本。
-
多個應用程序使用同一.NET Core安裝,從而減少了主機系統上的磁盤空間和內存使用。
FDD的缺點:
-
僅當您的應用程序所面向的.NET Core 版本或更高版本已在主機系統上安裝時,您的應用程序才能運行。
-
.NET Core運行時和庫可能會在您不了解未來版本的情況下進行更改。在極少數情況下,這可能會改變您應用的行為。
2.自包含部署(SCD)
SCD的優點:
-
可以完全控制與應用程序一起部署的.NET Core版本。
-
不用擔心目標系統沒有安裝.NET Core
SCD的缺點:
-
由於.NET Core包含在部署程序包中,因此您必須預先選擇要為其構建部署程序包的目標系統平台。
-
部署包相對較大,因為必須包括.NET Core以及應用程序及其第三方依賴項。
從.NET Core 2.0開始,通過使用.NET Core 全球化不變模式,您可以將Linux系統上的部署大小減少約28 MB 。通常,Linux上的.NET Core依賴ICU庫提供全球化支持。在不變模式下,庫不包含在您的部署中,並且所有區域性的行為都與不變區域性類似。
-
將大量獨立的.NET Core應用程序部署到系統上會占用大量磁盤空間,因為每個應用程序都復制.NET Core文件。
3.依賴框架的可執行文件(FDE)
從.NET Core 2.2開始,可以將應用程序以及所有必需的第三方依賴項部署為FDE。應用將使用目標系統上安裝的.NET Core版本。
FDE的優點:
-
部署包的大小很小。您只部署應用程序及其依賴項,而不部署.NET Core本身。
-
多個應用程序使用同一.NET Core安裝,從而減少了主機系統上的磁盤空間和內存使用。
-
可以通過調用已發布的可執行文件來運行您的應用程序,而無需
dotnet
直接調用該實用程序。
FDE的缺點:
-
僅當您的應用程序所面向的.NET Core 版本或更高版本已在主機系統上安裝時,您的應用程序才能運行。
-
.NET Core運行時和庫可能會在您不了解未來版本的情況下進行更改。在極少數情況下,這可能會改變您應用的行為。
-
您必須為每個目標平台發布您的應用程序。
發布方式
以上 .NET Core RID 說明
Windows RID
僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。
- 可移植(.NET Core 2.0 或更高版本)
win-x64
win-x86
win-arm
win-arm64
- Windows 7 / Windows Server 2008 R2
win7-x64
win7-x86
- Windows 8.1 / Windows Server 2012 R2
win81-x64
win81-x86
win81-arm
- Windows 10 / Windows Server 2016
win10-x64
win10-x86
win10-arm
win10-arm64
Linux RID
僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。 運行以下未列出的發行版的設備可能適用於其中一個可移植 RID。 例如,可以將運行未列出的 Linux 發行版的 Raspberry Pi 設備定向為使用 linux-arm
。
- 可移植(.NET Core 2.0 或更高版本)
linux-x64
(大多數桌面發行版,如 CentOS、Debian、Fedora、Ubuntu 及派生版本)linux-musl-x64
(使用 musl 的輕量級發行版,如 Alpine Linux)linux-arm
(在 ARM 上運行的 Linux 分發版,如 Raspberry Pi)
- Red Hat Enterprise Linux
rhel-x64
(被linux-x64
取代,適用於 RHEL 6 以上版本)rhel.6-x64
(.NET Core 2.0 或更高版本)
- Tizen(.NET Core 2.0 或更高版本)
tizen
tizen.4.0.0
tizen.5.0.0
有關詳細信息,請參閱 .NET Core 依賴項和要求。
macOS RID
macOS RID 使用較早的“OSX”品牌。 僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。
- 可移植(.NET Core 2.0 或更高版本)
osx-x64
(最低 OS 版本為 macOS 10.12 Sierra)
- macOS 10.10 Yosemite
osx.10.10-x64
- macOS 10.11 El Capitan
osx.10.11-x64
- macOS 10.12 Sierra(.NET Core 1.1 或更高版本)
osx.10.12-x64
- macOS 10.13 High Sierra(.NET Core 1.1 或更高版本)
osx.10.13-x64
- macOS 10.14 Mojave(.NET Core 1.1 或更高版本)
osx.10.14-x64