.NET Core Runtime vs .NET Framework Runtime

語言: CN / TW / HK

在我從 .NET Framework 到 .NET Core 的過渡期間,有一件事情讓我很長時間都感到困惑,那就是 Runtime 執行時, 實際上  Runtime 在 .NET Framework 和 .NET Core 中具有不同的含義。

  .NET Framework 執行時的歷史 

當有人問我們,什麼是 .NET Framework 執行時,我們都會說 CLR (公共語言執行時),這是絕對正確的。

這就自動給我們留下了一個印象,.NET Core 的執行時就是 CoreCLR 。然而,這也是對的。

但是現在讓我們瞭解一下 .NET Core 執行時除了 CoreCLR 之外, 還有什麼額外的東西?

  .NET Core 執行時有哪些新功能? 

很多網站上都提到, 您必須下載 .NET Core 執行時才能執行 .NET Core 應用程式,或者安裝最新的執行時才能執行 .NET 6 程式,因為 .NET 6 程式不能在之前的 .NET 5 執行時或者 .NET Core 3.1 執行時工作。

為什麼有這麼多執行時?

真讓人頭大 (如果您和之前的 .NET Framework 進行比較), 因為我們沒有在 .NET Framework 中更新過執行時 , 包括從 4.5 升級到 4.6,或從 4.6 升級到 4.7 或 4.8。

那麼,為什麼 .NET Core 會要求我們更新執行時呢?

好吧,實際上 執行時 在不同的上下文中具有不同的含義。

.NET Framework 中的執行時只是  CLR .NET Core 中的執行時不僅僅是  CoreCLR ,還包括 .NET Core 基礎類庫 (BCL)。

從 .NET Core 開始,Microsoft 就傳達出一個資訊, .NET Core 執行時不僅僅是 CLR ,它還包括執行 .NET Core 應用程式所必需的一切。

所以,典型的 .NET Core 執行時 包括了以下內容:

CoreCLR — 實際執行時 .NET Core BCL  — 基礎類庫

安裝 .NET Core 執行時後,就可以執行.NET Core 控制檯應用程式。

但是僅安裝了 .NET Core 執行時, 並不能執行 .NET Core Web 應用程式。

如果要執行 .NET Core Web 應用程式,同時需要 ASP.NET Core 執行時 和  .NET Core 執行時

總而言之,執行 .NET Core Web 應用程式需要以下條件:

.NET Core 執行時 (CoreCLR + BCL) ASP.NET Core 執行時(.NET Core 框架的類庫)

您可以從這個位置檢視所有已安裝的執行時: C:\Program Files\dotnet\shared

現在事情已經很清楚了!

  混亂的根源 

造成這些混亂的原因是,對於早期的 .NET Framework,我們沒有將 BCL(基礎類庫)視為執行時的一部分,而只是將 CLR 視為執行時。理想情況下, CLR 和 BCL 應該統稱為 .NET Framework Runtime