2009-12-22 29 views
16

al ejecutar un prorgam, parece que me falta una biblioteca, cuando lance el resultado de mi proyecto obtengo una excepción al inicio.No se pudo cargar un procedimiento importado por {myassembly}

A first chance exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll 
An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll 

Additional information: A procedure imported by 'my assembly, Version=xx.1.1.0, Culture=neutral, PublicKeyToken=7292581204d9e04a' could not be loaded. 

'ScriptX.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', No symbols loaded. 

Mi pregunta es: ¿Cómo puedo determinar qué biblioteca falta, ya que, en este punto, no puedo ver los valores pasados ​​a:

mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x3a bytes  

Respuesta

11

De hecho, hay un mecanismo integrado para estos diagnósticos.

(1) En las propiedades del proyecto/depuración, asegúrese 'Habilitar la depuración de código nativo' está marcada:

enter image description here

(2) Levantar la bandera show-loader-snaps - es una clave de registro en el IFEO y es accesible a través de la interfaz gráfica de usuario '' GlobalFlags:

enter image description here

(3) Ejecutar la aplicación e inspeccionar los mismos () verbos e panel de salida. En su mayoría, puede saltear hasta el final o buscar 'ERROR'.

Más detalles here.

+3

Ojalá pudiera +10 este – smirkingman

+2

Tuvimos dos desarrolladores que se golpeaban la cabeza contra un problema y esto nos indicó directamente la respuesta. ¡Gracias! –

8

Qué haces cualquier dllimport? - Esto parece un problema con un dll no administrado que no se encuentra?

Lo primero es asegurarse de que o de de cualquier DLL no administrada exe que se están poniendo en (a través de dllimport) se utilicen en la misma carpeta que el exe Net que usted está construyendo

Si la fuente de ensamblado de llamada no está disponible usted podría tratar de usar reflector en esa asamblea para buscar declaraciones dllimport

Aparte de que es posible que desee para que el visor de registro fustion para rastrear problemas de carga de montaje - ver esto blog post y msdn page para más detalles

+0

Lamentablemente no tengo acceso a la fuente de esta DLL. Si hay alguna forma de determinar qué ensamblaje no se pudo cargar, sería de gran ayuda. – BlueTrin

+0

Gracias, Richard, los dos enlaces fueron muy útiles. – BlueTrin

3

Implem un controlador para el evento AppDomain.AssemblyResolve. Le dice qué ensamblaje está buscando con ResolveEventArgs.Name. Si esto es solo un esfuerzo para solucionar este ensamblaje en particular, entonces use Fuslogvw.exe. Si el hangup es un ensamblaje no administrado, la opción de Perfil de DependencyWalker puede mostrarle qué falla en LoadLibrary(). El ProcMon de SysInternals también funcionará pero es mucho más ruidoso.

+0

Gracias por su respuesta, elegí la respuesta de Richard porque solo miré sus publicaciones y logré usar los registros de fusión. – BlueTrin

Cuestiones relacionadas