.NET 11 chính thức phát hành với C# 15 và hàng loạt nâng cấp

Công nghệ10 tháng 11, 2026·7 phút đọc

Microsoft đã phát hành .NET 11, bản hỗ trợ tiêu chuẩn (STS) kéo dài hai năm. Bản này mang đến C# 15 với kiểu hợp nhất (union type), Runtime Async dạng xem trước, ASP.NET Core hỗ trợ OpenAPI 3.2, .NET MAUI chuyển sang CoreCLR mặc định và nhiều công cụ phục vụ phát triển ứng dụng AI.

.NET 11 chính thức phát hành với C# 15 và hàng loạt nâng cấp

Microsoft vừa phát hành chính thức .NET 11, phiên bản tập trung vào việc giúp xây dựng ứng dụng hiện đại nhanh và hiệu quả hơn. Điểm nhấn nằm ở C# 15, ASP.NET Core, .NET MAUI và phát triển trên Windows, cùng hàng trăm tối ưu hóa runtime và bộ công cụ SDK phản hồi nhanh hơn.

Đây là bản phát hành Standard Term Support (STS) với thời gian hỗ trợ hai năm theo chính sách của .NET. Chính sách chất lượng và bảo trì của STS và Long Term Support (LTS) là như nhau, chỉ khác về độ dài hỗ trợ. .NET 10 vẫn tiếp tục là lựa chọn LTS được hỗ trợ.

Ảnh minh họa cộng đồng đóng góp cho .NET 11Ảnh minh họa cộng đồng đóng góp cho .NET 11

C# 15 và những thay đổi ngôn ngữ

C# 15 là phiên bản ngôn ngữ mặc định cho các dự án nhắm tới .NET 11. Nổi bật nhất là kiểu hợp nhất (union type): một giá trị có thể là một trong các kiểu được khai báo trước, với chuyển đổi từ các kiểu đó và kiểm tra tính đầy đủ trong biểu thức switch.

Ví dụ với một phép tra cứu sản phẩm, kết quả có thể là tìm thấy sản phẩm hoặc không tìm thấy. Kiểu kết quả cho người gọi biết những trường hợp nào cần xử lý, không cần dùng object hay một lớp cơ sở không liên quan chỉ để gom các kết quả về một kiểu trả về.

C# 15 cũng bổ sung phân cấp đóng (closed hierarchy). Một lớp đóng giới hạn việc kế thừa trực tiếp trong assembly khai báo nó, giúp trình biên dịch kiểm tra các mẫu trên toàn phân cấp. Union phù hợp khi cần kết hợp các kiểu có sẵn, còn phân cấp đóng phù hợp với mô hình mà bạn sở hữu quan hệ kế thừa.

Một số tính năng nhỏ hơn cũng hữu ích cho mã hằng ngày, như đối số biểu thức tập hợp cho phép truyền tham số constructor hoặc factory mà vẫn giữ cú pháp biểu thức tập hợp. Ngoài ra còn có indexer mở rộng, cùng break và continue có nhãn. Các tính năng này không cần phiên bản ngôn ngữ xem trước. Công việc về an toàn bộ nhớ vẫn ở dạng xem trước.

F# 11 cải thiện việc dùng bộ nhớ của trình biên dịch, giảm cấp phát trong các thao tác tập hợp của FSharp.Core và thêm cách giới hạn công việc bất đồng bộ đồng thời.

SDK và hiệu năng

SDK hiện bật mặc định Native AOT CLI host. Các lệnh như trợ giúp hay truy vấn phiên bản có thể chạy mà không cần khởi động CLI quản lý (managed). MSBuild server cũng được giữ "ấm" giữa các lần gọi CLI, giảm công việc khởi động lặp lại. Bộ cài SDK trên Linux và macOS trở nên nhỏ hơn nhờ khử trùng lặp assembly.

Ứng dụng dựa trên tệp (file-based app) có thể mở rộng qua nhiều tệp nguồn với #:include, và bộ lọc solution có thể tạo, chỉnh sửa ngay từ CLI. dotnet watch bổ sung tích hợp Aspire app-host, phục hồi sau sự cố và chọn thiết bị cho dự án di động.

Với các đội dùng Microsoft.Testing.Platform, dotnet test có thêm giới hạn thời gian ở cấp lần chạy, giới hạn số lần thất bại và báo cáo tiến độ rõ ràng hơn. Cần lưu ý các tùy chọn này không thay thế tương đương cho các tùy chọn dòng lệnh VSTest.

Về hiệu năng, trình biên dịch JIT loại bỏ nhiều kiểm tra biên và nhánh dư thừa hơn, cải thiện việc khử ảo hóa (devirtualization) và gộp nhiều phép toán thành hằng số. Việc điều phối giao diện (interface dispatch) trong Native AOT dùng một helper dùng chung, giảm mã tại điểm gọi giao diện và tăng thông lượng. Hỗ trợ phần cứng cũng mở rộng, gồm lệnh FP16 cho phép toán Half trên phần cứng x64 và Arm64 được hỗ trợ.

Runtime Async tiếp tục là chủ đề xuyên suốt các bản xem trước của .NET 11. Tính năng này đưa việc tạm dừng và tiếp tục bất đồng bộ vào runtime thay vì dựa vào máy trạng thái do trình biên dịch sinh ra. Một lợi ích đáng chú ý là ngăn xếp gọi trực tiếp rõ ràng hơn: profiler và trình gỡ lỗi có thể hiển thị chính các phương thức bất đồng bộ thay vì hạ tầng thực thi chúng. Runtime Async vẫn ở dạng xem trước và cần bật thủ công trong dự án nhắm tới net11.0.

Thư viện và công cụ AI

SDK .NET 11 có sẵn mẫu MCP server. MCP (Model Context Protocol) cho ứng dụng AI một cách chung để khám phá và gọi công cụ, dịch vụ. Mẫu này dùng SDK MCP C# chính thức và kèm một công cụ mẫu hoạt động được.

Với ứng dụng tiêu thụ dịch vụ AI, Microsoft.Extensions.AI (MEAI) cung cấp các trừu tượng như IChatClient và IEmbeddingGenerator, cho phép kết hợp truy cập mô hình với dependency injection, bộ nhớ đệm và OpenTelemetry theo cách quen thuộc của .NET.

Microsoft Agent Framework (MAF) xây dựng trên các trừu tượng này với các agent gọi công cụ và duy trì trạng thái hội thoại, cùng workflow điều phối agent và mã ứng dụng. Có thể nối agent với công cụ MCP và công bố agent qua endpoint AG-UI của ASP.NET Core.

Về thư viện, API Process được mở rộng với các phương thức chạy tiến trình một lần và thu lại đầu ra cùng mã thoát. Nén Zstandard được thêm vào System.IO.Compression. Bốn bộ chuyển đổi luồng trong bộ nhớ mới giúp đưa dữ liệu sẵn có tới các API nhận Stream mà không cần sao chép. System.Text.Json hỗ trợ union của C#, union phân biệt của F# và đầu ra JSON Lines. LINQ có thêm FullJoin, giữ lại các phần tử không khớp từ cả hai đầu vào.

ASP.NET Core, .NET MAUI và Windows

ASP.NET Core hỗ trợ union của C# ở mọi nơi dùng System.Text.Json, gồm phần thân JSON trong Minimal APIs và MVC. OpenAPI 3.2 trở thành phiên bản mặc định cho tài liệu sinh ra. Xác thực bất đồng bộ giúp các validator có thể chờ tra cứu cơ sở dữ liệu hay lời gọi từ xa mà không chặn luồng. SignalR cho phép làm mới xác thực mà không cần kết nối lại.

Blazor có thêm thành phần CacheView lưu bộ nhớ đệm đầu ra đã render của một nhánh thành phần trong chế độ render tĩnh phía máy chủ. Ứng dụng Interactive Server có thể chọn tự động tạm dừng circuit khi tab trình duyệt không hoạt động. Gói Microsoft.AspNetCore.Components.AI bổ sung thành phần cho giao diện agent như chat dạng luồng, hiển thị công cụ và luồng phê duyệt — nhưng gói này vẫn ở dạng thử nghiệm và xem trước trong suốt .NET 11.

.NET MAUI chuyển CoreCLR thành runtime mặc định trên các nền tảng, đưa ứng dụng di động và desktop về cùng nền tảng runtime với các workload .NET khác. XAML Incremental Hot Reload là tính năng xem trước, được bật mặc định trong bản Debug. Gói tùy chọn Microsoft.Maui.Controls.Compatibility không còn được phát hành; ứng dụng còn tham chiếu tới nó cần chuyển đổi.

Trên Windows, WinUI 3 là khung UI gốc được khuyến nghị cho ứng dụng desktop mới. Windows Forms có thêm chế độ phong cách hình ảnh hiện đại dạng tùy chọn. WPF tập trung vào độ tin cậy, gồm sửa lỗi nền cửa sổ Fluent và dọn dẹp sự kiện yếu.

Góc nhìn

Với các đội phát triển tại Việt Nam đang dùng .NET, điểm cần chú ý đầu tiên là lịch hỗ trợ: .NET 8 và .NET 9 sẽ hết hỗ trợ vào ngày 10/11/2026, nên việc lên kế hoạch nâng cấp không còn là tùy chọn mang tính "khi rảnh". Việc bật SDK mới không tự động đổi target framework, nên cần cập nhật global.json, target framework, gói và workload một cách có chủ đích trên cả máy dev lẫn build agent.

Về mặt kỹ thuật, kiểu hợp nhất trong C# 15 có thể giúp mã xử lý kết quả nghiệp vụ rõ ràng hơn, nhưng với các hệ thống đã chạy ổn định, giá trị lớn hơn nhiều khả năng đến từ các tối ưu JIT và công cụ SDK mà không phải viết lại logic. Còn với các nhóm đang xây tính năng AI, mẫu MCP server sẵn có và MEAI giúp thử nghiệm nhanh mà không phải chuyển toàn bộ mã sang khung mới — nhưng cần đo đạc trên chính workload của mình, vì thông lượng, thời gian khởi động và kích thước triển khai phụ thuộc vào cách đóng gói và cấu hình cụ thể.

Nguồn: devblogs.microsoft.com · Quy trình biên tập

Chia sẻ:FacebookX