Phát biểu sự cố: Triển khai hệ thống trình cắm cho phép các cụm liên kết được ghi đè (tránh khóa tệp). Trong. Net, các assembly cụ thể có thể không được load, chỉ toàn bộ các AppDomain có thể được dỡ bỏ.Làm cách nào để triển khai plugin .net mà không cần sử dụng AppDomains?
Tôi đăng bài này vì khi tôi đang cố giải quyết vấn đề, mọi giải pháp đều đề cập đến việc sử dụng nhiều AppDomain. Nhiều AppDomain rất khó triển khai đúng, ngay cả khi được cấu trúc ở đầu dự án.
Ngoài ra, AppDomains không hoạt động đối với tôi vì tôi cần chuyển Loại trên tên miền làm cài đặt cho hoạt động InvokeWorkflow của Máy chủ giọng nói worfklow. Thật không may, việc gửi một kiểu trên các tên miền khiến cho assembly được đưa vào AppDomain cục bộ.
Ngoài ra, điều này có liên quan đến IIS. IIS có một thiết lập Shadow Copy cho phép một assembly thực thi được ghi đè trong khi nó được nạp vào bộ nhớ. Vấn đề là (ít nhất là dưới XP, không thử nghiệm trên các máy chủ sản xuất 2003) khi bạn lập trình tải một assembly, shadow copy không hoạt động (vì bạn đang nạp DLL, chứ không phải IIS).
Tôi cho rằng điều này có nghĩa là bạn vẫn phải khởi động lại ứng dụng để sử dụng trình cắm mới sau khi đã được thay thế trên đĩa? Tôi đã bị ấn tượng rằng một khi một loại đã được tải, nó không thể thay đổi, ngay cả khi bạn tải lại lắp ráp. –
Bạn có thể sử dụng loại mới cùng một lúc. Bạn không phải là kỹ thuật "nạp lại" lắp ráp. Thay vào đó, bạn đang tải lắp ráp mới cạnh nhau với cái cũ. Nếu các hội đồng thay đổi thường xuyên, cuối cùng bạn sẽ hết bộ nhớ và cần phải khởi động lại ứng dụng. –