.NET Core是NET的ECMA標準的一種新的實現。目前.NET已有Framework,Mono,Unity等實現。git
原先全部的.NET程序(Mono不在範圍內)僅在windows平臺環境下運行,這嚴重限制了.NET的生態擴展,因此.NET Core解決了.NET跨平臺可移植的問題,能夠在Windows, Linux,MacOS下開發並部署運行。github
跨平臺: 能夠在 Windows、macOS 和 Linux 操做系統上運行。 跨平臺 ASP.NET Web 應用、跨平臺控制檯應用、跨平臺庫和框架、UWP 應用。docker
跨體系結構保持一致: 在多個體繫結構(包括 x64、x86 和 ARM)上以相同的行爲運行代碼。 json
命令行工具: 包括可用於本地開發和持續集成方案中的易於使用的命令行工具。 windows
部署靈活: 能夠包含在應用或已安裝的並行用戶或計算機範圍中。 可搭配 Docker 容器使用。 後端
兼容性:.NET Core 經過 .NET Standard與 .NET Framework、Xamarin 和 Mono 兼容。 app
開放源代碼:.NET Core 平臺是開放源代碼,使用 MIT 和 Apache 2 許可證。 .NET Core 是一個 .NET Foundation 項目。 框架
由 Microsoft 支持:.NET Core 由 Microsoft 依據 .NET Core 支持提供支持。工具
.NET Core是.NET技術的一種新的實現,而不是.NET Framework的子集。.NET Core的代碼和Framework的代碼能夠共存在一個解決方案中。測試
.NET Core 和 .NET Framework 上均實現了 .NET API(雖然有時底層的實現不一樣)。同時,.NET Core 和 .NET Framework 均有對方不具有的 API 和功能。例如,.NET Framework 有多個 .NET Core 不具有的 GUI 框架和特定於 Windows 的 API。一樣地,.NET Core 有 .NET Framework 缺乏的跨平臺功能和 API。
.NET Core 不支持全部 .NET Framework 應用模型。 具體而言,它不支持 ASP.NET Web 窗體和 ASP.NET MVC,但支持 ASP.NET Core MVC(已宣佈 .NET Core 3 將支持 WPF 和 Windows 窗體)。
.NET Core 包括如下部分:
.NET Core 運行時:提供類型系統、程序集加載、垃圾回收器、本機互操做和其餘基本服務。 .NET Core 框架庫提供基元數據類型、應用編寫類型和基本實用程序。
ASP.NET 運行時:提供框架以生成基於新式雲的 Internet 鏈接的應用程序,例如 Web 應用、IoT 應用以及移動後端。
.NET Core CLI 工具和語言編譯器(Roslyn 和 F#):提供 .NET Core 開發人員體驗。
dotnet 工具:用於啓動 .NET Core 應用和 CLI 工具。 它選擇運行時並託管運行時,提供程序集加載策略並啓動應用和工具。
這些組件採用如下方式分佈:
.NET Core 運行時-- 包括 .NET Core 運行時和框架庫。
ASP.NET Core 運行時-- 包括 ASP.NET Core 和 .NET Core 運行時以及框架庫。
.NET Core SDK -- 包括 .NET CLI 工具、ASP.NET Core 運行時以及 .NET Core 運行時和框架。
Mono 是原始的跨平臺和 開放源 .NET 實現,於 2004 年首次發佈。 能夠把它看做是 .NET Framework 的社區克隆。 Mono 項目團隊依賴於 Microsoft 發佈的開放 .NET 標準(尤爲是 ECMA 335),以便實現兼容性。
就這個角度來講,.NET Core與Mono是同樣的。
.NET Core 和 Mono 的主要差別在於:
應用模型 -- Mono 經過 Xamarin 產品支持 .NET Framework 應用模型(例如,Windows Forms)和其餘應用模型(例如,Xamarin.iOS)的子集。 而 .NET Core 不支持這些內容。
API -- Mono 使用相同程序集名稱和組成要素支持 .NET Framework API 的 大型子集。
平臺 -- Mono 支持不少平臺和 CPU。
開放源 -- Mono 和 .NET Core 二者都使用 MIT 許可證,且都屬於 .NET Foundation 項目。
焦點 -- 最近幾年,Mono 的主要焦點是移動平臺,而 .NET Core 的焦點是雲和桌面工做負載。
可使用 C#、Visual Basic 和 F# 語言編寫適用於 .NET Core 的應用程序和庫。
.NET Core的項目工程使用CLI做爲操做界面,它是一個命令行程序。常見的命令以下:
命令 |
說明 |
dotnet new |
使用 C# 語言初始化用於類庫或控制檯應用程序的有效項目。 |
dotnet restore |
還原在指定項目的 project.json 文件中定義的依賴項。依賴項一般是您在應用程序中使用的 NuGet 包。 |
dotnet build |
生成您的代碼! 此命令將生成適用於您的項目的中間語言 (IL) 二進制。若是項目是控制檯應用程序,則產生的輸出是可執行的,您能夠當即運行。默認狀況下,生成命令會將生成的程序集和可執行文件(若是適用)輸出到調用位置目錄的 bin 目錄中。 |
dotnet test |
若是不支持運行測試,則不會出現適合的工具。此命令讓您可使用在 project.json 文件中指定的運行程序運行一組測試。目前支持 xUnit 和 NUnit 測試運行程序。 |
dotnet publish |
發佈在目標計算機上運行的應用程序。 |
dotnet pack |
pack 命令會把您的項目打包成 NuGet 包。輸出一組 nupkg 文件後,您能夠將其上載至您的源,或使用本地文件夾替代將其用於還原操做。 |
dotnet run |
運行命令將編譯並運行您的應用程序。您能夠將其看做沒有 Visual Studio 的 Ctrl+F5 模擬。 |
從目前微軟在.NET Core上的更新速度以及開發計劃上看,.NET Core的發展前景很是好,且逐步完善並向.NET Framework功能集合靠攏。好比.NET Core 3.0預覽版即將支持WinForm和WPF程序開發。
而Mono的發展逐步轉移到移動開發上。