Hỗ trợ .NET Hot Reload cho ASP.NET Core
.NET Hot Reload (tải lại nóng) áp dụng các thay đổi code, bao gồm thay đổi stylesheet (bảng kiểu), vào ứng dụng đang chạy mà không cần khởi động lại ứng dụng và không mất trạng thái ứng dụng. Hot Reload được hỗ trợ cho tất cả các dự án ASP.NET Core trong .NET 6 trở lên.
Thông thường, code được cập nhật sẽ được chạy lại để có hiệu lực với các điều kiện sau:
- Một số startup logic (logic khởi động) chỉ chạy một lần:
- Middleware (phần mềm trung gian), trừ khi cập nhật code là cho một inline middleware delegate (delegate phần mềm trung gian nội tuyến).
- Các services đã cấu hình.
- Việc tạo và cấu hình route (tuyến đường), trừ khi cập nhật code là cho một route handler delegate (ví dụ:
OnInitialized). - Trong các ứng dụng Blazor, framework tự động kích hoạt render lại Razor component.
- Trong các ứng dụng MVC và Razor Pages, Hot Reload tự động kích hoạt làm mới trình duyệt.
- Việc xóa thuộc tính component parameter của một Razor component không khiến component đó render lại. Ứng dụng phải được khởi động lại.
Để biết thêm thông tin về các kịch bản được hỗ trợ, xem Supported code changes (C# and Visual Basic).
Blazor WebAssembly
Blazor WebAssembly Hot Reload hỗ trợ các thay đổi code sau:
- Các type mới.
- Các class lồng nhau.
- Hầu hết các thay đổi cho method body (thân phương thức), chẳng hạn như thêm, xóa và chỉnh sửa biến, biểu thức và câu lệnh.
- Thay đổi cho thân của lambda expressions và local functions (hàm cục bộ).
- Thêm static và instance methods vào các type hiện có.
- Thêm static và instance fields (trường), events (sự kiện), và properties (thuộc tính) vào các type hiện có.
- Thêm static lambdas vào các methods hiện có.
- Thêm lambdas capture
thisvào các methods hiện có đã capturethistrước đó.
Lưu ý rằng khi một attribute bị xóa mà trước đó đã đặt giá trị cho một component parameter, component sẽ bị dispose (hủy) và tái khởi tạo để đặt lại parameter bị xóa về giá trị mặc định của nó.
Các thay đổi code sau không được hỗ trợ cho các ứng dụng Blazor WebAssembly:
- Thêm một toán tử
awaitmới hoặc biểu thức từ khóayield. - Thay đổi tên của các method parameters (tham số phương thức).
.NET CLI
Hot Reload được kích hoạt bằng lệnh dotnet watch:
dotnet watch
Để buộc ứng dụng rebuild (xây dựng lại) và restart (khởi động lại), sử dụng tổ hợp phím Ctrl+R trong command shell (dòng lệnh).
Khi thực hiện một chỉnh sửa code không được hỗ trợ, được gọi là rude edit (chỉnh sửa thô bạo), dotnet watch sẽ hỏi bạn có muốn khởi động lại ứng dụng không:
- Yes: Khởi động lại ứng dụng.
- No: Không khởi động lại ứng dụng và để ứng dụng tiếp tục chạy mà không áp dụng các thay đổi.
- Always: Khởi động lại ứng dụng khi cần thiết khi rude edit xảy ra.
- Never: Không khởi động lại ứng dụng và tránh các thông báo trong tương lai.
Để tắt hỗ trợ Hot Reload, truyền tùy chọn --no-hot-reload vào lệnh dotnet watch:
dotnet watch --no-hot-reload
Tắt Hot Reload
Cài đặt sau trong Properties/launchSettings.json tắt Hot Reload:
"hotReloadEnabled" : false