.net - una - descarga dependency walker 2.2 x64 aquí.
NUnite "missing" GPSVC.DLL en Windows 7/64 (3)
Recientemente actualicé Vista / 32 a Win7 / 64. En mi máquina vieja, todo estaba funcionando bien.
Desafortunadamente, en mi nueva máquina NUnit no cargará mis pruebas unitarias, con el mensaje de error "System.IO.FileNotFoundException: No se pudo cargar el archivo o ensamblado ''UnitTest'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado" . (En realidad, tuve que revisar todos los proyectos de mi solución y configurarlos en 32 bits para llegar hasta aquí).
Así que cargué Dependency Walker, y me dijo que me faltaba IESHIMS.DLL . Encontré dos en mi máquina, así que copié en la versión de 32 bits del directorio de Internet Explorer y DW dejó de quejarse sobre ese archivo.
Sin embargo, también falta el GPSVC.DLL . Encontré solo una copia de esto en C: / Windows / System32, pero cuando copio eso en el directorio de prueba de mi unidad, DW se queja de que es de 64 bits, y NUnit aún no se ejecutará. También ahora agrega SYSNTFY.DLL a la lista que falta. Solo tengo uno de esos, y eso también es de 64 bits. NUnit aún informa un error.
Entonces, ¿debería descartar este sistema operativo de 64 bits y volver a 32 bits, o me falta algo obvio?
La única forma en que pude hacer que funcionara fue convertir toda mi aplicación a un objetivo de 32 bits y probarla en una máquina virtual de 32 bits. Además, las DLL tenían que estar en una unidad local (no de red), porque la depuración no está permitida en las unidades de red (al menos no pude hacer que funcione).
Llegué al mismo problema hoy, afortunadamente hay una solución muy simple y otra más compleja.
La solución simple es ejecutar nunit-console-x86.exe, en lugar de nunit-console.exe
La solución difícil con una explicación parcial es:
Lo que está sucediendo es que el corredor de la consola nunit se está ejecutando en el modo de 64 bits, lo que de alguna manera impide que cargue los dlls de prueba de la unidad que están en el modo de 32 bits.
La corrección se realiza en el exe de la consola nunit, le dice a Windows que lo fuerce a ejecutar en un modo de compatibilidad de 32 bits. Este link muestra cómo hacerlo.
NB, necesitarás descargar también un SDK de Windows para obtener el corflags.exe, recuerda ejecutar el comando desde el símbolo del sistema del SDK.
Windows tiene un símbolo del sistema de 64 bits, pero puede obtener uno de 32 bits iniciando c:/windows/syswow64/cmd.exe
explícitamente. Desde allí, puede llamar a c:/windows/syswow64/regsvr32.exe
y el registro se realizará correctamente.