Ensamblaje.gettypes ()
-
26-10-2019 - |
Pregunta
Tengo esto en mi código:
Assembly assembly = Assembly.LoadFile(dllFile);
//dllFile has the correct value of a path of a .dll file
foreach (Type type in assembly.GetTypes()) {...}
Cuando debuge mi programa, todo funciona bien. Cuando creo el EXE para mi programa, el código llega a ensamblar.gettypes () y deja de ejecutar. ¿Qué podría causar el ensamblaje.gettypes () funcione de manera diferente cuando estoy depurando de cuando estoy usando el EXE?
Solución
Eche un vistazo a este enlace:
http://social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/3bdaf65c-520c-4a1a-a825-fc2ca2957bf3/
Nunca debe usar ensamblar.loadFile (). Use loadFrom () Si sabe dónde se encuentra el ensamblaje, use load () para dejar que .NET descubra dónde se encuentra el ensamblaje. El uso de load () debe ser su preferencia, pero puede requerir un archivo .config para ayudar a .net encontrar el ensamblaje
crédito a @Hanspassant
Otros consejos
Cuando crea un archivo EXE, debe asegurarse de que sus ensambles estén en la carpeta correcta y también que el archivo EXE tenga acceso a la carpeta.
Puede suscribirse a ese evento y hacer un simple Assembly.LoadFrom
Desde un lugar conocido por usted o incluso hacer una carga elegante suya en función de algún sistema que diseñe. También hay TypeResolve
y ResourceResolve
eventos en el AppDomain
que le permiten manejar esos aspectos de resolver las diversas dependencias de un AppDomain
. Para más detalles ver esto Hilo del foro de Microsoft.