c# .net-4.0 .net-2.0 .net-assembly dynamic-assemblies

c# - Cargando archivos DLL de plug-in, "El miembro invocado no se admite en un ensamblaje dinámico".



.net-4.0 .net-2.0 (3)

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

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

Tenemos archivos DLL personalizados que no están incluidos en nuestro archivo de configuración inicial. Se cargan en tiempo de ejecución. Este proceso funcionó bien al usar .NET 2.0, pero recibimos el mensaje de error "El miembro invocado no se admite en un ensamblaje dinámico" ahora que estamos usando .NET 4.0.

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



Para mí, este problema no incluía la licencia para una dll Aspose: http://www.aspose.com/community/forums/thread/423874/initializing-the-license-file.aspx

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

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