2017-03-14 22 views
5

Tôi đang viết một ứng dụng Asp.Net Core để có thể tự cập nhật (thay thế các tệp nhị phân của chính nó trong khi đang chạy).Tự cập nhật/sao chép bản sao với Asp.Net Core

This MSDN article mô tả sao chép bóng với khung .Net cổ điển, đó chính xác là những gì tôi cần. Nhưng toàn bộ điều AppDomain bị thiếu trong .Net Core.

Vì vậy, câu hỏi của tôi là:

  • Có một cách khác trong Net Core để thiết lập đổ bóng sao chép các hội đồng?
  • Có cơ chế nào khác trong .Net Core cho phép xây dựng ứng dụng tự cập nhật không?
+0

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 –

+0

Bạn đã tìm thấy giải pháp cho điều đó chưa? –

+0

@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ờ. –

Trả lời

1

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:

  1. Ứ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.
  2. Ứ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
  3. các ứng dụng đang chạy thoát khỏi chính nó.
  4. 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.
  5. 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.
  6. 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.

4

Không có xây dựng cơ sở vật chất bóng sao chép trong .NET Lõi

Các vấn đề liên quan