Tôi cố gắng thêm một hệ thống addons vào ứng dụng Windows.Net của tôi bằng cách sử dụng Reflection; nhưng nó không thành công khi có addon với dependencie.
Lớp Addon phải triển khai giao diện 'IAddon' và để có một hàm tạo rỗng.
chương trình chính tải addon sử dụng Reflection:Reflection.Net: làm thế nào để tải phụ thuộc?
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\Addon.dll");
Type t = assembly.GetType("Test.MyAddon");
ConstructorInfo ctor = t.GetConstructor(new Type[] { });
IAddon addon= (IAddon) ctor.Invoke(new object[] { });
addon.StartAddon();
Nó hoạt động tuyệt vời khi addon không sử dụng dependencie. Nhưng nếu tham chiếu addon của tôi và sử dụng một DLL khác (C: \ Temp \ TestAddon \ MyTools.dll) được lưu gần addon trong đĩa, nó không thành công:
System.IO.FileNotFoundException: Không thể tải tệp hoặc lắp ráp 'MyTools.dll' hoặc một trong các phụ thuộc của nó.
Tôi không muốn sao chép phần bổ trợ DLL gần tệp thực thi của tôi, tôi có thể làm như thế nào để biết thời gian chạy .Net để tìm kiếm trong "C: \ Temp \ TestAddon \" cho bất kỳ phụ thuộc nào?
Lưu ý rằng việc thêm
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
không thay đổi bất cứ điều gì.