- Có một ứng dụng (executor.exe) gọi các phương thức từ thư viện lớp (lib.dll) bằng cách sử dụng sự phản chiếu.
- executor.exe đã lắp ráp Newtonsoft.Json phiên bản 8.0 dưới dạng tài nguyên được nhúng.
- lib.dll có tham chiếu đến Newtonsoft.Json phiên bản 9.0.
- lib.dll có tham chiếu đến system.net.http.formatting phiên bản 4.0.0.21112, lần lượt đề cập đến Newtonsoft.Json 4.5.
- Tôi không có cơ hội sửa đổi tệp execor.exe.config (trừ thử nghiệm).
gì tôi muốn nhận được:Ngoại lệ "Phương thức không tìm thấy". Tại sao AppDomain.CurrentDomain.AssemblyResolve không hoạt động?
new JsonMediaTypeFormatter().SerializerSettings;
gọi từ lib.dll. Nhưng nó không thành công với:
Phương pháp không tìm thấy: 'Newtonsoft.Json.JsonSerializerSettings System.Net.Http.Formatting.JsonMediaTypeFormatter.get_SerializerSettings()'
Những gì tôi đã cố gắng để làm:
- Xử lý AppDomain.CurrentDomain.AssemblyResolve (đã đăng ký chính xác, sử dụng ModuleInitializer). Nhưng nó không tăng lên. Sau khi tai nạn có 2 Newtonsoft.Json (với các phiên bản khác nhau) được tải vào AppDomain.
Binding trong ứng dụng cấu hình:
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="4.0.0.0-5.0.0.0" newVersion="9.0.0.0" />
Vâng, nó hoạt động. Nhưng tôi không thể sử dụng giải pháp này. Sau khi vượt qua có 2 Newtonsoft.Json (với các phiên bản khác nhau) được nạp vào AppDomain.
Tôi không hiểu tại sao các công trình này (oldversion = "8.0.0.0-9.0.0.0") nhưng:
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="8.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
ngoại lệ "Phương pháp không tìm thấy "không ném. Sau khi vượt qua có 1 Newtonsoft.Json (9.0) được nạp vào AppDomain. Nhưng không thích hợp với tôi.
Tại sao AppDomain.CurrentDomain.AssemblyResolve không hoạt động? Tôi đoán vấn đề là trong 2 hội đồng nạp nhưng tôi không thể thay đổi hành vi này.
Bạn đã nói phiên bản 8 được lưu trữ dưới dạng tài nguyên được nhúng. Tại sao? Nó được sử dụng như thế nào? – Evk