Nunit no puede encontrar el ensamblado de C++

Estoy trabajando en la aplicación .NET 4 que usa una biblioteca VS2005 C++/CLI. Las pruebas en torno a la biblioteca C++/CLI son ejecutores de pruebas personalizados basados ​​en consola y son un poco torpes. He estado tratando de escribir algunas pruebas nuevas usando nunit.

El problema es que la aplicación basada en consola puede cargar todos los ensamblajes dependientes, pero Nunit se queja de que no puede encontrar ensamblajes (p. ej., System.Runtime.Serialization.SerializationException: no se puede encontrar el ensamblaje 'msvcm80, Version=8.0.50727.6195, Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a').

He comprobado que la aplicación basada en la consola está cargando el ensamblado en C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a\mscvm80.dll y copié este archivo manualmente en los directorios de compilación y el directorio del ejecutor de pruebas. Esto no ayuda.

Depends.exe me dice que GPSCV.DLL e IESHIMS.DLL no se pueden encontrar, pero eso no impide que la aplicación de la consola cargue las dependencias, por lo que no estoy seguro de si eso es importante.

¿Alguien tiene algún consejo sobre la solución de problemas de las pruebas de Nunit que tienen dependencias de bibliotecas C++/CLI más antiguas?

preguntado el 31 de julio de 12 a las 11:07

No estoy seguro de si esto es relevante, pero ¿tiene .NET 2.0 instalado en su computadora? Además, ¿sería capaz de reconstruir su biblioteca C++/CLI para apuntar a .NET 4 en su lugar? -

Gracias, no tengo el tiempo de ejecución de .NET 2.0 instalado en los programas y características de Windows 7. Lo instalaré y veré si funciona de alguna manera. La recompilación para .NET 4 también tiene sentido (puede haber alguna otra dependencia horrible de .NET 2 allí, ¡pero no lo sabré hasta que lo pruebe!). -

1 Respuestas

Cuando ejecuté el ejecutable nunit en la ruta de salida de compilación, mis nuevas pruebas se ejecutaron correctamente en nunit.

Parece que este problema es simplemente un caso de necesidad de las DLL de C++ requeridas en la misma ruta que el corredor de nunit (o al menos accesible para nunit). Lo que es confuso es que la excepción de carga del Módulo lanzada cuando la prueba se ejecuta desde nunit en otra ubicación nombra un ensamblado (msvcm80.dll) que no es necesario en la ruta de nunit. De todos modos, el árbol de dependencia es un poco opaco para mí y esto me causó mucha confusión.

Lo molesto de esto es que tengo que llamar a la consola nunit a través de un script por lotes en Team City para ejecutar pruebas de CI para este ensamblaje en lugar de en el corredor de pruebas nunit de Team City (como hacemos para todas las demás pruebas).

Respondido 03 ago 12, 15:08

Primero, ¿estás usando la última NUnit? (2.6.1 ahora mismo). Sí recuerdo haber visto informes de errores sobre interacciones administradas y no administradas. En segundo lugar, puede hacer que Team City recoja los resultados de la prueba y los muestre como lo hace con el corredor Nunit. Controlar esta pregunta. - dario_ramos

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.