- .NET Core 教程
- .NET Core - 首頁
- .NET Core - 概述
- .NET Core - 先決條件
- .NET Core - 環境設定
- .NET Core - 入門
- .NET Core - 數值
- .NET Core - 垃圾回收
- .NET Core - 程式碼執行
- .NET Core - 模組化
- .NET Core - 專案檔案
- .NET Core - 包引用
- 使用 .NET Core 建立 UWP 應用
- .NET Core - MSBuild
- .NET Core - 元包
- Windows 執行時和擴充套件 SDK
- 建立 .NET Standard 庫
- .NET Core - 可移植類庫
- 向庫新增引用
- 共享 .NET Core 庫
- 建立 Xamarin.Forms 專案
- .NET Core - PCL 故障排除
- .NET Core - 建立測試專案
- 在 Visual Studio 中執行測試
- .NET Core - 測試庫
- 託管可擴充套件性框架
- .NET Core - SDK
- .NET Core - MSBuild 和 project.json
- 還原和構建以及 MSBuild
- .NET Core - 遷移
- .NET Core 有用資源
- .NET Core - 快速指南
- .NET Core - 有用資源
- .NET Core - 討論
.NET Core - 程式碼執行
在本章中,我們將瞭解 .NET Core 的執行過程,並將其與 .NET Framework 進行比較。託管執行過程包括以下步驟。
- 選擇編譯器
- 將程式碼編譯為 MSIL
- 將 MSIL 編譯為原生代碼
- 執行程式碼
選擇編譯器
它是一個多語言執行環境,執行時支援各種資料型別和語言特性。
要獲得公共語言執行時提供的優勢,您必須使用一個或多個面向執行時的語言編譯器。
將程式碼編譯為 MSIL
編譯將您的原始碼轉換為 Microsoft 中間語言 (MSIL) 並生成所需的元資料。
元資料描述了程式碼中的型別,包括每個型別的定義、每個型別成員的簽名、程式碼引用的成員以及執行時在執行時使用的其他資料。
執行時根據需要在執行期間從檔案以及框架類庫 (FCL) 中查詢並提取元資料。
將 MSIL 編譯為原生代碼
在執行時,即時 (JIT) 編譯器將 MSIL 轉換為原生代碼。
在此編譯過程中,程式碼必須透過驗證過程,該過程檢查 MSIL 和元資料以確定程式碼是否可以確定為型別安全。
執行程式碼
公共語言執行時提供支援執行的基礎結構以及可在執行期間使用的服務。
在執行期間,託管程式碼會收到諸如垃圾回收、安全、與非託管程式碼的互操作性、跨語言除錯支援以及增強的部署和版本控制支援等服務。
.NET Core 程式碼執行過程
現在讓我們瞭解一下程式碼如何與 .NET Core 相比 .NET Framework 執行。在 .NET Core 中,這些元件的許多替換都是 .NET Framework 的一部分。
在 .NET Core 中,我們現在有一系列新的編譯器,例如,我們有用於 C# 和 VB 的 Roslyn。
如果您想將 F# 與 .NET Core 一起使用,也可以使用新的 F# 4.1 編譯器。
實際上,這些工具是不同的,如果我們使用的是 C# 6 或更高版本,我們也可以將 Roslyn 與 .NET Framework 一起使用,因為 C# 編譯器只能支援到 C# 5。
在 .NET Core 中,我們沒有框架類庫 (FCL),因此使用一組不同的庫,我們現在有 CoreFx。
CoreFx 是 .NET Core 類庫的重新實現。
我們還為 .NET Core 提供了一個新的執行時,稱為 CoreCLR,並利用了 JIT 編譯器。
現在問題是,為什麼我們要重新實現我們在 .NET Framework 中已經擁有的所有這些元件。
所以答案與 Microsoft 為什麼實現 .NET Core 相同。