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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top