## .NET Framework
.NET Framework框架只能在windows上運行,但各種跨平臺的需求原來越強烈,不能滿足跨平臺、模塊化的需求。
## .NET Standard
.NET Framework可以跨平臺的部分提取出來,封裝成Windows標準庫就是.NET Standard,其他系統的特有的部分在這個Windows標準庫沒有
## \.NET Core
在標準庫\.NET Standard基上開發出來\.NET Core。.NET Core穩定后,改名成.NET 5/6/7。
.NET Core可以在Windows、Linux和macOS上運行,并且支持多種編程語言,如C#、F#和Visual Basic
NET Core 3.1是一個長期支持(LTS)版本,將支持三年。
NET Core 3.1支持的平臺:
* Alpine: 3.10+
* Debian: 9+
* Ubuntu: 16.04+
* Fedora: 29+
* centOS: 7+
* RHEL: 6+
* openSUSE: 15+
* SUSE Enterprise Linux (SLES): 12 SP2+
* macOS: 10.13+
* Windows Client: 7, 8.1, 10 (1607+)
* Windows Server: 2012 R2+
**注意:**Windows窗體和WPF應用程序僅在Windows上運行和支持。
CPU架構支持:
* x64 支持 Windows, macOS, 和 Linux
* x86 支持 Windows
* ARM32 支持 Windows 和 Linux
* ARM64 支持 Linux (kernel 4.14+)
**注意:**需要確保.NET Core 3.1 ARM64部署使用Linux內核4.14版本或更高版本。例如,Ubuntu 18.04滿足這個要求,但16.04是不滿足的。
**參考文檔:**[https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/](https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/)
## .NET 5
.NET 5是.NET Core3.1的下一個版本(跳過4是為了避免與,net Framework 4.x 混淆),它是一個統一的開發平臺,用于構建應用程序和服務,可以在Windows、Linux和macOS上運行。.NET 5支持多種編程語言,包括C#、F#、Visual Basic和C++/CLI
.NET 5 不會替換 .NET Framework
.NET Framework 4.x 仍受支持。 目前沒有計劃將以下技術從 .NET Framework 移植到 .NET 5,但 .NET 中有一些替代項:
| 技術 | 建議使用的替代項 |
| --- | --- |
| Web 窗體 | ASP.NET CoreRazor或Razor Pages |
| Windows 工作流 (WF) | Elsa-Workflows |
.NET 5 也
不會替代 .NET Standard
.NET 5 與 C# 9 搭配,為語言帶來了許多新功能
## **.NET 6**
.NET 6 提供 .NET 統一計劃的最終部分,該計劃在 .NET 5 中啟動。 .NET 6 在移動、桌面、IoT 和云應用之間統一了 SDK、基礎庫和運行時。 除了這方面的統一以外,.NET 6 生態系統還提供了以下功能:
1)簡化開發
輕松入門。 C# 10 中的新語言功能可減少需要編寫的代碼量。 利用 Web 堆棧和最小 API 的投資,可以輕松地快速編寫更小、更快速的微服務。
2)更佳的性能
.NET 6 是最快的完整堆棧 Web 框架,如果在云中運行,則會降低計算成本。
3)終極工作效率
.Net 6 和 Visual Studio 2022 提供熱重載、新的 git 工具、智能代碼編輯、可靠的診斷和測試工具以及更好的團隊協作。
.NET 6 將作為長期支持 (LTS) 版本得到三年的支持。 .NET 6 重寫 System.IO.FileStream 類型,以便在 Windows 上提供更佳的性能和可靠性。 現在 FileStream 絕不會在為 Windows 上的異步 I/O 創建時阻止。按配置優化 (PGO) 是指 JIT 編譯器根據最常使用的類型和代碼路徑生成優化后的代碼。 .NET 6 引入了動態 PGO。 動態 PGO 與分層編譯配合運作,以根據層級 0 中實施的其他檢測來進一步優化代碼。 動態 PGO 默認情況下處于禁用狀態,但可以使用 DOTNET\_TieredPGO環境變量來啟用它。
.NET 6 引入了 Crossgen2,它是已被刪除的 Crossgen 的后繼版本。 Crossgen 和 Crossgen2 是用于提供預先 (AOT) 編譯的工具,可改進應用的啟動時間。 Crossgen2 是用 C# (而不是 C++)編寫的,可執行之前的版本無法實現的分析和優化。
.NET 6 版本支持 macOS Arm64(或“Apple Silicon”)和 Windows Arm64 操作系統,支持本機 Arm64 執行和 x64 模擬。 此外,x64 和 Arm64 .NET 安裝程序現在會并行安裝。
使用熱重載功能,可以修改應用源代碼,并立即將這些更改應用到正在運行的應用。 此功能的目的是避免在編輯之間重新啟動應用程序,從而提高工作效率。 熱重載在 Visual Studio 2022 和 dotnet watch 命令行工具中可用。 熱重載適用于大多數類型的 .NET 應用以及 C#、Visual Basic 和 C++ 源代碼。
**參考文檔:**[https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-6](https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-6)
## **.NET 7**
.NET 7是.NET 6的后續版本
.NET 7 為應用程序帶來了更高的性能和C# 11/ F# 7、.NET MAUI、ASP.NET Core/Blazor, Web api, WinForms, WPF等等。有了.NET 7\\還可以輕松地將.NET 7項目進行容器化,在GitHub操作中設置CI/CD工作流,并實現云原生的可觀察性。
.NET仍然是最快、最受喜愛和信任的平臺之一,它擁有龐大的.NET包生態系統,包括超過33萬個包。
.NET 7版本與其他產品、庫和平臺一起發布,包括:
* [ASP.NET Core 7](https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-7)
* [Entity Framework Core 7](https://devblogs.microsoft.com/dotnet/announcing-ef7)
* [.NET MAUI](https://devblogs.microsoft.com/dotnet/dotnet-maui-dotnet-7)
* [Windows Forms](https://devblogs.microsoft.com/dotnet/winforms-enhancements-in-dotnet-7)
* [WPF](https://devblogs.microsoft.com/dotnet/wpf-on-dotnet-7)
* [Orleans 7](https://devblogs.microsoft.com/dotnet/whats-new-in-orleans-7/)
更新與優化包括如下:
1).NET MAUI
.NET多平臺應用程序 UI (MAUI) 將 Android、iOS、macOS 和 Windows API 統一到一個API中,開發者可以編寫一個在多平臺上本機運行的應用。作為.NET 7的一部分,.NET MAUI提供了一個項目來處理跨設備及其平臺的多目標。
2)ARM64
ET可幫助開發者構建在ARM設備上運行的應用,.NET 7將迎來多項改進。
3)性能
.NET 7是目前最快的.NET。.NET 7對反射、堆棧替換 (OSR)、啟動時間、本機 AOT、循環優化和許多其他領域進行了超過一千項影響性能的改進。
## **.NET Framework、.NET Standard、.NET Core與.NET 5/6/7 區別**
.NET Framework框架只能在windows上運行,但各種跨平臺的需求原來越強烈,不能滿足跨平臺、模塊化的需求。微軟把.NET Framework可以跨平臺的部分提取出來,封裝成標準庫就是.NET Standard。無論哪個系統平臺上,標準庫里內容是完全通用的。但其他系統的特有的部分在Windows中也沒有,所以在標準庫.NET Standard基上開發出來.NET Core。.NET Core穩定后,改名成.NET 5/6/7。
* 1).NET Core
適用于windows、linux、macos操作系統的免費開源托管的計算軟件框架。最初是為了支持ASP.NET Core而創建的。.NET Core可以在Windows、Linux和macOS上運行,并且支持多種編程語言,如C#、F#和Visual Basic。
* 2).NET Standard
基礎的規范標準,把.NET Framework的某些程序集對應到.NET Core。如果本來就是.NET Core以上的版本就沒必要使用.NET Standard。
* 3).NET 5/6/7
.NET Core的穩定版本 官方也有文檔說明如何 從 ASP.NET Core 3.1 遷移到 6.0。
.NET 5是.NET Core的下一個版本,它是一個統一的開發平臺,用于構建應用程序和服務,可以在Windows、Linux和macOS上運行。.NET 5支持多種編程語言,包括C#、F#、Visual Basic和C++/CLI。
- Visual Studio 2022安裝到非C盤
- .net平臺區別
- 常用單詞
- 關鍵字
- 操作符(運算符)
- 標識符(命名規范)
- 開始
- 變量
- 常量
- 數據類型
- 值類型
- 變量數據類型
- 枚舉類型enum(常量集合)
- 結構類型struct(結構體)
- 元組類型
- 可null類型(T?)
- 引用類型
- 數組(array)
- 集合(List)
- 內置引用類型
- object
- string
- Dynamic(動態類型)
- delegate委托(代理)類型
- 自定義引用類型
- 接口(interface)
- 類class
- record(定義一個引用類型)
- 指針類型(僅用于非安全代碼)
- get和set訪問器
- delegate委托
- delegate實現發布訂閱與事件
- 類型轉換
- 合并操作符??
- 類相關
- Partial 部分類
- 類定義以及訪問修飾符(封裝)
- abstract抽象類與sealed密封類
- virtual虛方法
- 接口interface
- C# 預處理器指令
- C#技術棧
- 判斷(流程控制)與三元運算
- if
- switch
- 三元運算
- 循環
- while 循環
- for循環
- foreach循環
- do...while 循環
- 文件操作
- 其他
- 多開