Vì không có xây dựng trong cơ chế trong .NET cốt lõi để làm điều này, tôi đã kết thúc việc thực hiện giải pháp tùy chỉnh của riêng tôi. Nó hoạt động gần như thế này:
- Ứng dụng đang chạy tải xuống và trích xuất các tệp nhị phân mới vào một thư mục mới.
- Ứng dụng đang chạy bắt đầu quá trình cập nhật nhỏ. Các thông số sau được truyền cho quá trình cập nhật thông qua dòng lệnh:
- Process id của ứng dụng đang chạy
- Binary đường dẫn của ứng dụng đang chạy
- Path of the binaries tải
- các ứng dụng đang chạy thoát khỏi chính nó.
- Quy trình cập nhật chờ cho đến khi ứng dụng đang chạy đã thoát (sử dụng id tiến trình) hoặc ép chết ứng dụng đang chạy nếu nó không tự thoát trong một khoảng thời gian chờ nhất định.
- Quy trình cập nhật sẽ xóa các tệp nhị phân hiện có và sao chép các tệp nhị phân mới được tải xuống.
- Quy trình cập nhật bắt đầu phiên bản mới của ứng dụng chính.
Đảm bảo bạn làm càng nhiều càng tốt trong ứng dụng chính (tải xuống, giải nén, xác thực, ...) và giữ quy trình cập nhật càng đơn giản càng tốt (giảm thiểu rủi ro thất bại).
Cách tiếp cận này đã được chứng minh là khá ổn định.
Nguồn
2018-01-30 07:19:13
Bạn có tìm thấy bất kỳ công việc nào cho việc này không? Thật không may, Đã 2 năm kể từ khi ra mắt lõi .Net và có vẻ như vẫn không có sự hỗ trợ cho điều này. Tôi cũng phải đối mặt với vấn đề tương tự: https://stackoverflow.com/questions/47895998/asp-net-core-updating-or-publishing-new-dlls-without-stopping-the-application –
Bạn đã tìm thấy giải pháp cho điều đó chưa? –
@MU Vui lòng xem câu trả lời mới của tôi, nơi tôi mô tả giải pháp tôi đang sử dụng ngay bây giờ. –