2010-07-23 20 views
5

Cuando ejecuto la versión de lanzamiento de mis (VS .NET 2008) las pruebas unitarias, me sale el siguiente excepción:Problemas al ejecutar pruebas unitarias en Visual Studio

System.IO.FileLoadException: No se pudo cargar el archivo o assembly 'arcVegaORM, Version = 1.0.3856.24327, Culture = neutral, PublicKeyToken = 0dd85ae1d99ddbee' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040).

No obtengo la excepción cuando ejecuto las pruebas de compilación de depuración.

El marco de prueba de la unidad está copiando una versión anterior del ensamblado 'arcVegaORM' en la carpeta TestResults \ Out. No sé de dónde sale la versión anterior, no coincide con la versión en la carpeta bin \ Release del proyecto.

Estoy empezando a pensar que hay un error en el marco de prueba de la unidad VS.NET, y que tiene la versión anterior en caché.

Respuesta

2

Una cosa para comprobar sería el GAC (caché de ensamblaje global). Puede hacerlo abriendo Windows Explorer y escribiendo c: \ windows \ assembly en la barra de direcciones (suponiendo que su sistema operativo está instalado en la unidad c).

En su lugar, puede obtener el ensamblaje del GAC.

Otras cosas que hacer sería limpiar la solución y hacer una reconstrucción para asegurarse de que no tiene ninguna referencia de ensamblado anterior.

Además, si se trata de una aplicación web, siempre ayuda a detener IIS y luego se limpia la carpeta C:\WINDOWS\Microsoft.NET\Framework\framework_version\Temporary ASP.NET Files.

TIP
La otra cosa a utilizar es el .Net reflector. Puede ver las dependencias que tiene el ensamblaje y debe asegurarse de que estén todas presentes en el equipo de destino.

La forma de hacerlo es instalar el reflector, luego ejecútelo, luego arrastre su ensamblaje hacia adentro y podrá ver las dependencias del conjunto. Debe asegurarse de que cada uno de esos DLL de dependencia esté disponible en el equipo de destino, y también, el número de versión debe ser correcto si son ensamblados firmados.

TIP2
Tenga en cuenta que a veces se obtiene cuestiones en conjunto A está unido en contra de la versión xxx del conjunto B, C y montaje está obligado frente a la versión yyy del conjunto B. En otras palabras, 2 montajes diferentes en su proyecto son atado a diferentes versiones de la misma asamblea. Esta es la versión moderna de DLL Hell. La forma de hackear esto es usar ensamblado de recombinación. Puedes leer al respecto here.

+0

El conjunto no está en el GAC, ya lo he comprobado. Y el problema es reproducible en otras máquinas. – GarethOwen

+0

Vea mi último consejo, uso esta técnica para resolver este tipo de problemas. Además, estoy agregando tip2 en un segundo, así que esté atento :). – dcp

+0

+1 para su respuesta detallada, pero no creo que este sea el problema. El ensamblaje que no se puede encontrar - arcVegaORM - es un proyecto en mi solución. De coures intenté hacer una reconstrucción completa, pero la versión que se copia en el directorio de ejecución de prueba no es la misma versión que en el directorio arcVegaORM bin. Solo un problema cuando se ejecutan las pruebas de lanzamiento: ¡ejecutar las pruebas de compilación de depuración funciona bien! – GarethOwen

Cuestiones relacionadas