2011-04-06 10 views
41

Tengo una aplicación C# que debe ejecutarse en modo x64. El problema es que trato de crear pruebas unitarias que ejecuten métodos en la aplicación x64 y el proyecto de prueba de unidad ni siquiera se compilará. Obtengo el siguiente error cuando intenta compilar.¿Cómo puedo obtener pruebas unitarias para ejecutar en una plataforma x64?

Error al cargar C: ..... \ bin \ x64 \ Debug .... UnitTests.dll: No se puede cargar el contenedor de prueba 'C: ..... \ bin \ x64 \ Debug .... UnitTests.dll 'o uno de sus dependencias. Si construye el ensamblaje de proyecto de prueba como un ensamblaje de 64 bits, no se puede cargar. Cuando construya su proyecto de prueba ensamblaje, seleccione "Cualquier CPU" para la plataforma. Para ejecutar sus pruebas en el modo de 64 bits en un procesador de 64 bits, debe cambiar la configuración de prueba en la pestaña Hosts para ejecutar sus pruebas en un proceso de 32 bits. Detalles del error: No se pudo cargar el archivo o ensamblado 'file: /// C: ..... UnitTests \ bin \ x64 \ Debug .... UnitTests.dll' o uno de sus dependencias. Se intentó cargar un programa con un formato incorrecto .

He intentado cambiar la unidad de prueba a x64 y también a cualquier CPU y todavía no puedo hacer que funcione. ¿Hay algún arreglo para esto?

+0

¿Tiene su biblioteca de prueba de unidad tiene ninguna referencia que son sólo x86? – Tejs

Respuesta

36

Supongo que está utilizando el marco de pruebas de Visual Studios ya que no menciona ninguna otra. En VS2010 puede forzar que el host de prueba se ejecute en x64. Cree sus ensamblajes como Cualquier CPU o x64 luego configure el host de prueba en x64.

http://msdn.microsoft.com/en-us/library/ee782531.aspx

+0

Sí, lo siento, es Visual Studio 2010 –

+1

excelente respuesta y resolvió mi problema. Tuve que hacer una cosa más para hacer que funcione, que se explica aquí. http://stackoverflow.com/questions/2314887/mstest-no-tests-are-run-because-no-tests-are-loaded-or-the-selected-tests-are-d –

+0

Whoops se olvidó de explicar lo que tuve que hacer. Tuve que cambiar la configuración a Cualquier CPU en el administrador de configuración como se indica aquí. "Debe asegurarse de que se está construyendo el ensamblaje.En mi caso, este error se debió a una combinación de lo siguiente: (a) en el "Administrador de configuración", el botón "compilar" no estaba marcado (b) todos los demás ensamblajes estaban configurados en x32, este se configuró en "Cualquier CPU" en el "Administrador de configuración" (c) se quejaba de que necesitaba un ensamblado firmado, así que necesitaba configurar esto en las propiedades del proyecto " –

1

Tuve un problema similar. Existe un problema extraño en Visual Studio 2010 (en x64), que hace que la CPU de destino se modifique cuando agrega un nuevo proyecto a la solución existente. ¿Estás seguro de que todas las referencias y los objetivos de CPU son x64?

0

Usted tendrá que configurar todas las referencias del proyecto de prueba en local (conjunto en true). Tengo este problema antes, espero que funcione para usted también (estoy usando Windows 7 64 bit + VS2012)

0

Este error puede ser reparado si limpia y reconstruye todos los ensamblajes relevantes. Debe haber un archivo dañado inesperadamente.

Una cosa para mejorar VS, es cuando se detecta la excepción de formato incorrecto, informe el nombre del archivo. Entonces el desarrollador solo puede reconstruir ese archivo.

38

En VS 2012 y por encima de usted puede seleccionar la plataforma de destino por defecto de Test menú bajo Test Settings|Default Processor Architecture

Visual Studio Test Settings

+2

_ Esa era la marca de verificación que omití. Busqué por edades a través de las Propiedades del proyecto tanto del testee como del proyecto de prueba, y todo se redujo a eso marca de verificación individual en la configuración de prueba ... § $% & # *! –

+0

Si usa el corrector de prueba de la unidad Resharper, también verifique su plataforma: http://stackoverflow.com/a/34517992/40422 –

Cuestiones relacionadas