2012-04-10 33 views
14

Tenemos DLL personalizados que no están incluidos en nuestro archivo de instalación inicial. Se cargan en tiempo de ejecución. Este proceso funcionó bien al usar .NET 2.0, pero estamos obteniendo el mensaje de error "El miembro invocado no es compatible con un ensamblaje dinámico" ahora que estamos usando .NET 4.0.Cargando archivos DLL de complemento, "El miembro invocado no es compatible con un ensamblado dinámico".

try 
{ 
    assem = Assembly.LoadFrom(fi.FullName); //fi is FileSystemInfo 
} 
catch (FileLoadException) {} 
catch (BadImageFormatException) {} 
catch (System.Security.SecurityException) {} 
catch (ArgumentException) {} 
catch (PathTooLongException) {} 
+2

Stacktrace please. – leppie

Respuesta

8

Para mí esta cuestión no se Inserción de la licencia para una DLL Aspose: http://www.aspose.com/community/forums/thread/423874/initializing-the-license-file.aspx

Su código inyecta montajes dinámicos cuando no se detecta una licencia, haciendo que sus DLL fallen, así como un montón de otro código que no es compatible con ensambles dinámicos.

No estoy seguro de si este es un método de licencia/activación común para garantizar el uso registrado con dlls de terceros, por lo que lo publicaré aquí para google, si es así.

5

Este error se produce porque Assembly.Load no se puede invocar en los ensamblados dinámicos. Debe filtrar los ensamblados dinámicos antes de usarlos.

var assemblies AppDomain.CurrentDomain.GetAssemblies().Where(p => !p.IsDynamic);

Cuestiones relacionadas