Intento agregar un sistema de complementos a mi aplicación Windows.Net usando Reflection; pero falla cuando hay un complemento con dependencie.
La clase de complemento tiene que implementar una interfaz 'IAddon' y tener un constructor vacío.
programa principal cargar el complemento usando Reflexión:Reflection.Net: cómo cargar dependencias?
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();
Funciona muy bien cuando complemento no utilizan dependencie. Pero si mi complemento hace referencia y usa otra DLL (C: \ Temp \ TestAddon \ MyTools.dll) guardada cerca del complemento en el disco, falla:
System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado 'MyTools.dll' o una de sus dependencias.
No quiero copiar la DLL de complementos cerca de mi ejecutable, ¿cómo puedo hacer para decirle a .Net runtime que busque en "C: \ Temp \ TestAddon \" cualquier dependencia?
Tenga en cuenta que la adición de
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
no cambie nada.