NET 31 版以前稱作NET Core 是微軟開發的第一個跨平臺 Windows、Mac OSX、Linux）的應用程式開發框架（Application Framework），未來也將會支援 FreeBSD 與 Alpine 平臺。Net Core 也是微軟在一開始發展時就開源的軟體平臺 Overview of NET Implementations ，，它經常也會拿來和現有的開源 NET 平臺 Mono 比較。 由於 NET Core 的開發目標是跨平臺的 NET 平臺，因此 NET Core 會包含 NET Framework 的類別庫，但與 NET Framework 不同的是 NET Core 採用套件化 Packages 的管理方式，應用程式只需要取得需要的元件即可，與 NET Framework 大包式安裝的作法截然不同，同時各套件亦有獨立的版本線 Version line，不再硬性要求應用程式跟隨主線版本。 NET Core 專案的主要目標有 ： 支援或可以移轉 port 到更多的作業系統平臺與晶片架構 也就是未來計畫會跨出 x86 平臺。 具有引人注目的效能與高可靠度。 開發人員能快速與直覺的獲取 NET Core 開發環境。 在直覺與具生產力的情況下建造應用程式，使用檔案，範例與 NuGet 元件。 歷史 NET Core 10 於 2016 年 6 月 27 日釋出。 2020 年 11 月，微軟釋出了 NET 50，統一了NET 的各個平臺的碎片版本： NET Framework 48 NET Standard NET Core 31 Mono Xamarin 等。 2021 年 11 月，微軟釋出了 NET 60 。 2022 年 11 月，微軟釋出了 NET 70 。 版本 釋出日期 一同釋出的產品 最新補丁版本 補丁釋出日期 終止支援 20160627 Visual Studio 2015 Update 3 1016 20161116 Visual Studio 2017 Version 150 1113 20170814 Visual Studio 2017 Version 153 209 20180530 Visual Studio 2017 Version 157 2130 LTS 20181204 Visual Studio 2019 Version 160 228 20190923 Visual Studio 2019 303 20191203 Visual Studio 2019 3132 LTS 20201110 Visual Studio 2019 Version 168 5017 20211108 Visual Studio 2022 Version 170 6036 20221108 Visual Studio 2022 Version 174 704 20231114 804 LTS 20241112 Visual Studio 2022 Version 1712 901 核心功能 NET Core 是由許多專案所組成，除了基本的類別庫 Core FX 之外，也包含採用 RyuJIT 編譯的執行平臺 Core CLR、編譯器平臺 NET Compiler Platform、採用 AOT 編譯技術執行最佳化的套件 Core RT NET Core Runtime，以及跨平臺的 MSIL 編譯器 LLILC LLVMbased MSIL Compiler 等專案。 同時，微軟也發展了一個建置技術檔案的平臺 docfx ，並運用於 NET Core 的檔案網站。 RyuJIT RyuJIT 是微軟發展的新式即地編譯器 JustinTime Compiler，用以取代現有的 NET Framework 的 JIT 以及 JIT64 即地編譯器，依據微軟公佈的測試報告，RyuJIT 的效能較前一代的 JIT 提升約 25，並支援 SIMD Single Instruction Multiple Data 的技術。RyuJIT 同時應用於 NET Framework 46 以及 NET Core。 Core CLR Core CLR 移植 NET Framework 的 CLR 的功能，包含核心程式庫 mscorlib、JIT 編譯器、垃圾收集器 GC 以及其他執行 MSIL 所需要的執行期環境。 Core RT Core RT 是以 為主的核心功能，在 NET Core 內稱為 Core RT，在 UWP 則是稱為 NET Native。 Core RT 會在建造時期 非執行期 在編譯時將 MSIL 轉換成平臺原生的機器碼，以獲取較短的啟動時間 JIT 採用的是執行時期編譯，使得啟動時間拉長，以及記憶體用量減少的優點。Core RT 會在不同的平臺使用不同的 AOT 技術： Windows 上使用的是 NET Native。 Mac OS 與 Linux 上使用的是 LLILC 同時支援 JIT 和 AOT。 LLILC LLILC LLVMbased MSIL Compiler，英文發音為 lilac 是 NET Core 在非 Windows 平臺的 MSIL 編譯器，基於 ECMA335 Common Language Infrastructure 的標準將 MSIL 編譯成原生碼執行，適用於可執行 LLVM 的作業系統，例如 Mac OSX 與 Linux 作業系統。 LLILC 同時支援 JIT 內含 RyuJIT 的實作 以及 AOT 未來將開始支援 的編譯方式。 Roslyn NET Compiler Platform 專案程式碼為 Roslyn 是將 NET 平臺的編譯架構標準化的平臺，它可提供程式管理工具 如整合開發環境 相當多的情報，用以發展有助於編寫程式與管理程式結構所需要的功能，例如型別資訊、語法結構、參考連結、語意、編譯器、自動化、錯誤回報等等功能，只要是遵循 CLI 標準的程式語言，都可以利用 NET Compiler Platform 實作出編譯器，讓程式管理工具能實作如語法提示、語法自動完成、關鍵字高亮等視覺化能力。 NET Compiler Platform 可同時支援 NET Framework 46 以上版本，NET Core 也原生支援。 套件管理 NET Core v10 時期 NET Core 的類別庫採用 NuGet 套件化的架構，應用程式只需要使用 projectjson 的 dependencies 區段加入指定套件版本的參考，就能獲得該套件的功能，與以往 NET Framework 大包式的提供方法完全不同。NET Core 團隊宣佈已經有 98 的 NET Framework 主要類別庫移轉到 NET Core 平臺。 例如下列 projectjson 內容，可直接加入 NET Standard Library v100rc223901 的參考。 version 100 compilationOptions emitEntryPoint true dependencies NETStandardLibrary 100rc223901 frameworks netstandardapp15 imports dnxcore50 NET Standard Library 是一個總括型的 NuGet Package，其內包含了這些類別庫套件： MicrosoftDotNetCoreHost NETStandardPlatform SystemCollectionsConcurrent SystemLinq SystemRuntimeNumerics SystemTextRegularExpressions 其中的 NETStandardPlatform 也是一個總括型套件，包含了下列類別庫套件： MicrosoftNETCorePlatforms MicrosoftNETCoreRuntime MicrosoftWin32Primitives SystemAppContext SystemCollections SystemDiagnosticsDebug SystemDiagnosticsTools SystemDiagnosticsTracing SystemGlobalization SystemGlobalizationCalendars SystemIO SystemIOFileSystem SystemIOFileSystemPrimitives SystemNetPrimitives SystemNetSockets SystemReflection SystemReflectionExtensions SystemReflectionPrimitives SystemReflectionTypeExtensions SystemRuntime SystemRuntimeExtensions SystemRuntimeHandles SystemRuntimeInteropServices SystemRuntimeInteropServicesRuntimeInformation SystemTextEncoding SystemTextEncodingExtensions SystemThreading SystemThreadingTasks SystemThreadingTimer 開發人員只需要使用 NETStandardLibrary 就能加入所有必要的 NET Core 類別庫參考，但若不需要這麼多元件，也可以只加入特定的套件即可，不一定都要加入 NETStandardLibrary。 NET Core v11 時期 對於微軟來說，NET Core 10 以及早期開發時 使用 projectjson 來處理套件管理與版本相依的問題，是因為很多工具還沒趕上 例如微軟主力的建置工具 MSBuild，再加上 projectjsonxproj 架構並不相容於以 MSBuild 為主的工具鏈 Toolchain，若是要修改成相容 projectjsonxproj 架構的話可能會付出極大成本，因此在 NET Core 10 RC2 發布不久，官方就宣佈要將 projectjsonxproj 系統移回到以 MSBuild 為主的 csproj ，例如下列 csproj 的例子即可看到套件參考的內容。 Project SdkMicrosoftNETSdkWeb PropertyGroup TargetFrameworknetcoreapp11TargetFramework PropertyGroup PropertyGroup PackageTargetFallbackPackageTargetFallbackportablenet45win8wp8wpa81PackageTargetFallback PropertyGroup PropertyGroup UserSecretsIdaspnetMyCoolWebApplicatione119bc9638e944abb4d3d54964ade9b1UserSecretsId DockerComposeProjectPathdockercomposedcprojDockerComposeProjectPath PropertyGroup ItemGroup PackageReference IncludeMicrosoftApplicationInsightsAspNetCore Version200 PackageReference IncludeMicrosoftAspNetCore Version111 PackageReference IncludeMicrosoftAspNetCoreAuthenticationCookies Version111 PackageReference IncludeMicrosoftAspNetCoreDiagnosticsEntityFrameworkCore Version111 PackageReference IncludeMicrosoftAspNetCoreIdentityEntityFrameworkCore Version111 PackageReference IncludeMicrosoftAspNetCoreMvc Version112 PackageReference IncludeMicrosoftAspNetCoreStaticFiles Version111 PackageReference IncludeMicrosoftEntityFrameworkCoreDesign Version111 PrivateAssetsAll PackageReference IncludeMicrosoftEntityFrameworkCoreSqlServer Version111 PackageReference IncludeMicrosoftEntityFrameworkCoreSqlServerDesign Version111 PrivateAssetsAll PackageReference IncludeMicrosoftEntityFrameworkCoreTools Version110 PrivateAssetsAll PackageReference IncludeMicrosoftExtensionsConfigurationUserSecrets Version111 PackageReference IncludeMicrosoftExtensionsLoggingDebug Version111 PackageReference IncludeMicrosoftVisualStudioWebCodeGenerationDesign Version110 PrivateAssetsAll PackageReference IncludeMicrosoftVisualStudioWebBrowserLink Version110 ItemGroup ItemGroup DotNetCliToolReference IncludeMicrosoftEntityFrameworkCoreToolsDotNet Version100 DotNetCliToolReference IncludeMicrosoftExtensionsSecretManagerTools Version100 DotNetCliToolReference IncludeMicrosoftVisualStudioWebCodeGenerationTools Version100 ItemGroup Project 由於 NET Core 移回了 MSBuild 架構，因此在 Visual Studio 2017 的 NET Core 工具內，已恢復可直接於 IDE 的 GUI 介面中編修套件參考的功能。 應用程式型別 NET Core 基於跨平臺能力，並沒有將與 GUI 高度相關的 API 移植到 NET Core 內，因此像是 Windows Forms 或是 Windows Presentation Foundation WPF 並未移植到 NET Core。NET Core 支援主控臺應用程式 Console Application 以及類別庫 Class Library 型別的專案。 不過微軟在其 Universal Windows Platform UWP 開發平臺使用了 NET Core，並且利用 NET Native 技術將其效能提升至十分接近原生碼的速度。 ASPNET Core 則以主控臺應用程式驅動其代管環境 Kestrel Server 以支援 ASPNET Core 程式的執行。 NET CLI NET CLI CommandLine Interface 指令列工具是 NET Core 處理建造、執行與編輯工作的主要工具 ，有幾個主要的動作： 指令 說明 dotnet new 產生新的基本 NET 專案內容 包含 projectjson、Programcs 以及 NuGetconfig dotnet restore 還原所參考的 NuGet 套件 dotnet build 建造 NET 專案 dotnet publish 產生可發行的 NET 專案 包含所屬的 Runtime dotnet run 編譯與立即執行 NET 專案 較適用於 exe 型專案 dotnet repl 啟動互動式的對話 dotnet pack 將專案的產出封裝成 NuGet 套件 與其他平臺的關係 NET Core 經常會拿來與其他平臺做類比，尤其是它的源頭 NET Framework 以及另一個相似性質的開源平臺 Mono。 NET Framework 據微軟的說明，NET Core 和 NET Framework 是子集 Subset 與超集 Superset 的關係，NET Core 將會實作出部份的 NET Framework 功能 基本上是不含使用者介面的部份，例如 JIT NET Core 採用 RyuJIT、垃圾收集器 GC 以及型別 包含基本型別以及泛型型別等。NET Framework 與 NET Core 已經在 NET 5 及以後合併為統一的 NET 平臺 Mono Mono 是另一個已發展許久的 NET Framework 跨平臺開源版本，起初由社群主導，並由 Xamarin 等技術推動了NET 跨平臺應用的開發。在NET Core 問世後，微軟逐步將跨平臺的核心功能和支援納入微軟官方的NET 生態中，最終在NET5 及以後版本將NET Core 和 Mono 合併至統一的NET 平臺。此後不再區分NET Framework NET Core 和 Mono。 然而，Mono 仍然具有其特定的用途，例如作為 Unity 遊戲引擎和 Xamarin。AndroidXamariniOS 的執行環境，因為其提供的輕量級 JIT 編譯和 AOT Ahead Of Time 功能。 與 ASPNET Core 的關係 NET Core 與 ASPNET Core 的關係其實一開始並不是主從關係 ，ASPNET Core 的開發初期 ASPNET 5 NET Core 還沒有開始起跑，因此 ASPNET Core 當時有自己的執行期與工具，一開始稱為 Project K，後來改為 DNX NET Execution Environment，DNX 本身就具有可獨立運作的執行能力，不需要依賴 NET Core 執行，但是這樣會變成 NET Core 和 ASPNET Core 雙頭馬車的現象，在 NET Core 逐漸成熟之後，微軟也決定要將這兩個各自獨立發展的產品線整合在一起，DNX 也將因改用 NET Core 執行期而終止開發，DNX 的功能將由 NET Core 以及旗下的 NET CLI 接替提供，整合後的版本將在 10 RC2 時釋出。 支援作業系統 NET 9 支援下列作業系統 ： 作業系統 版本 平臺 組態 Windows 10 Version 1607 x64 x86 Arm64 Windows 11 Version 22000 x64 x86 Arm64 Windows Server 2012 x64 x86 全功能版、Server Core Windows Nano Server Version 2019 x64 Windows Server Core 2012 x64x86 Alpine Linux 319 x64 Arm32 Arm64 CentOS 9 x64 Arm64ppc664les390x Debian 12 x64 Arm32 Arm64 Fedora 40 x64 Arm32 Arm64 OpenSUSE 155 x64 Red Hat Enterprise Linux 8 x64 Arm64 SUSE Linux Enterprise 12 SP2 x64 Arm64ppc664les390x Ubuntu 1804 x64 Arm32 Arm64 macOS 13 x64 Arm64 iOS 160 Arm64 tvOS 122 Arm64 Android API 21 x64 Arm32 Arm64 參考 Category 微軟 CategoryNET Category 微軟開發工具 Category 微軟 API