Microsoft đã phát hành .NET 10 Preview 6 vào ngày 15 tháng 7 năm 2024, mang đến một số cải tiến đáng chú ý bao gồm tối ưu hóa code generation của JIT và tính năng thực thi tool một lần. Mặc dù bản cập nhật giới thiệu các tính năng hữu ích, phản hồi từ cộng đồng developer cho thấy những lo ngại đang diễn ra về độ tin cậy của tooling và hướng chiến lược của nền tảng có thể ảnh hưởng đến quyết định áp dụng.
Các tính năng chính của .NET 10 Preview 6
- Cải tiến JIT: Nâng cao khả năng tạo mã cho các tham số struct với các thành viên được thăng cấp trong thanh ghi chia sẻ
- Thực thi công cụ một lần: Lệnh
dotnet tool exec
để chạy các công cụ mà không cần cài đặt - Hỗ trợ công cụ đa nền tảng: Các công cụ giờ đây có thể đóng gói các tệp nhị phân cho nhiều RuntimeIdentifiers (RIDs)
- Xuất bản tệp thực thi gốc: Các ứng dụng dựa trên tệp hỗ trợ xuất bản thành tệp thực thi gốc thông qua
dotnet publish app.cs
- Cải tiến bảo mật JSON: Tùy chọn mới để không cho phép các thuộc tính JSON trùng lặp trong quá trình deserialization
- Đầu ra CLI Schema: Tùy chọn
cli-schema
mới cung cấp biểu diễn JSON của cây lệnh CLI
![]() |
---|
Tổng quan về bản phát hành .NET 10 Preview 6 và các tính năng chính của nó |
Tính Năng Thực Thi Tool Một Lần Giải Quyết Nhu Cầu Scripting Lâu Nay
Việc giới thiệu dotnet tool exec
cho phép các developer chạy .NET tools mà không cần cài đặt chúng cục bộ hoặc toàn cục. Tính năng này đặc biệt có lợi cho các pipeline CI/CD và các tình huống sử dụng tạm thời. Các thành viên cộng đồng đã hoan nghênh sự bổ sung này, lưu ý rằng nó đưa C# gần hơn với khả năng scripting mà F# đã được hưởng thông qua dotnet fsi
. Tính năng này cho phép các developer thực thi các file C# như scripts mà không cần bước build, làm cho ngôn ngữ này phù hợp hơn cho các tác vụ tự động hóa nhanh và các tiện ích sử dụng một lần.
Các Vấn Đề Tooling Dai Dẳng Gây Khó Chịu Cho Trải Nghiệm Phát Triển
Mặc dù có các tính năng mới, các developer tiếp tục báo cáo những vấn đề đáng kể với trải nghiệm phát triển. Chức năng hot reload trong dotnet watch
vẫn không đáng tin cậy, với các thay đổi CSS đôi khi không được phát hiện ngay cả khi sử dụng flag --no-hot-reload
. Người dùng Visual Studio báo cáo các vấn đề đang diễn ra với syntax highlighting và IntelliSense cho các component Blazor, những vấn đề đã tồn tại qua nhiều phiên bản. Những vấn đề tooling này tạo ra sự không chắc chắn trong quá trình phát triển, khiến việc phân biệt giữa lỗi coding thực sự và trục trặc của tool trở nên khó khăn.
Tất cả những gì tôi muốn là dotnet watch hoạt động theo cách có thể dự đoán được. Trong .NET 9, ngay cả khi sử dụng —no-hot-reload, đôi khi các thay đổi CSS đối với components không được nhận diện trên các component Blazor.
Các Tool Định Dạng Code Tụt Hậu So Với Tiêu Chuẩn Ngành
Hệ sinh thái .NET vẫn thiếu một code formatter có quan điểm rõ ràng được áp dụng rộng rãi có thể so sánh với Prettier trong thế giới JavaScript. Mặc dù các tool như CSharpier tồn tại và đã có được một số sức hút, nhiều team doanh nghiệp vẫn do dự trong việc áp dụng formatting tự động. Lệnh dotnet format
tích hợp sẵn cung cấp các tùy chọn cấu hình mở rộng nhưng yêu cầu thiết lập đáng kể để đạt được formatting nhất quán. Sự phân mảnh này buộc các team phải dựa nhiều vào formatting đặc thù của IDE, tạo ra thách thức trong các môi trường phát triển hỗn hợp nơi các thành viên team sử dụng các editor khác nhau.
Các công cụ định dạng code được cộng đồng đề cập
Công cụ | Loại | Mức độ áp dụng | Tính năng chính |
---|---|---|---|
CSharpier | Bên thứ ba | Đang phát triển (2k sao GitHub) | Định dạng theo quan điểm riêng, mang tính quyết định |
dotnet format | Chính thức của Microsoft | Tích hợp sẵn | Có thể cấu hình cao, tích hợp với các trình phân tích |
StyleCop | Cũ | Đang suy giảm | Thực thi bố cục tệp và quy tắc đặt tên |
Roslynator | Trình phân tích | Đang hoạt động | Phân tích và sửa lỗi code |
Mối Quan Ngại Về Việc Áp Dụng Nền Tảng Giữa Các Lựa Chọn Công Nghệ Của Chính Microsoft
Các cuộc thảo luận cộng đồng tiết lộ mối quan ngại ngày càng tăng về việc áp dụng .NET trong tương lai, đặc biệt là với các lựa chọn công nghệ của chính Microsoft trong các dịch vụ Azure. Nhiều dự án CNCF mà Microsoft đóng góp được viết bằng Go hoặc Rust thay vì .NET, đặt ra câu hỏi về sự hỗ trợ nội bộ của nền tảng. Quyết định viết lại tooling TypeScript bằng Go thay vì tạo một phiên bản .NET đã làm thất vọng một số developer, những người coi đây là cơ hội bị bỏ lỡ để thể hiện khả năng của nền tảng.
Các Cuộc Tranh Luận Về Vòng Đời Framework Tiếp Tục
Cộng đồng vẫn chia rẽ về chu kỳ hỗ trợ ba năm của Microsoft cho các phiên bản .NET. Trong khi một số developer đánh giá cao các cập nhật thường xuyên và thấy việc nâng cấp tương đối dễ dàng, những người khác lại thích sự ổn định của .NET Framework 4.8 với timeline hỗ trợ dài hơn. Sự khác biệt về kích thước deployment vẫn là một mối quan ngại thực tế, với các ứng dụng .NET Framework thường tạo ra các file thực thi nhỏ hơn do framework được cài đặt sẵn trên các hệ thống Windows, trong khi các ứng dụng .NET Core có thể đạt 70-80MB khi self-contained.
Sự đón nhận trái chiều của .NET 10 Preview 6 làm nổi bật khả năng kỹ thuật của nền tảng cùng với những thách thức dai dẳng trong trải nghiệm developer và định vị chiến lược. Mặc dù các cải tiến hiệu suất và tính năng mới thể hiện sự đổi mới liên tục, việc giải quyết độ tin cậy của tooling và tính nhất quán của hệ sinh thái có thể là yếu tố quan trọng để duy trì niềm tin của developer và thu hút người dùng mới đến nền tảng.
Tham khảo: .NET 10 Preview 6 brings JIT improvements, one-shot tool execution