Actualicé nuestro software de vs2008/.net 3.5 a vs2010/.net 4.0. Todas las bibliotecas de terceros (las más relevantes: nhibernate 2.1.2 o 3.0.0, nunit 2.5.2) aún se compilan utilizando vs2008. Cuando ejecuto las pruebas unitarias para la compilación de depuración de nuestro software, todo funciona bien. En la compilación de lanzamiento, nunit informa excepciones en 33 de 228 pruebas: System.InvalidProgramException : Common Language Runtime detected an invalid program.
Siempre ocurre en las mismas pruebas, tanto para nunit-console como para el rastreador de prueba Resharper 5.0. Cuando los ejecuto usando el comando Resharper "depurar pruebas de unidades", todas las pruebas pasan. No hace ninguna diferencia si ejecuto las pruebas individualmente o por lotes. La excepción siempre ocurre cerca de las llamadas de consulta de nhibernate, pero no puedo asegurarlo ya que el rastreo de la pila de compilación de lanzamiento es algo escaso. No depende del generador de códigos de bytes de nhibernate, la misma excepción aparece para castle y linfu. ¿Alguien tiene una idea de cómo depurar esto?nunidad en la versión de lanzamiento: "Common Language Runtime detectó un programa no válido".
Editar: Quitar Spring.NET no tuvo ningún efecto sobre este problema.
Editar: Cuando cambio la salida de liberación de configuración de depuración para completa en lugar de pdb única y desactivar la casilla de verificación optimizar el código, desaparece la excepción. Ambas configuraciones son necesarias, si cambio solo una de ellas, el error persiste. Sin embargo, un conjunto diferente de pruebas falla si solo cambio uno. Todas las bibliotecas de clase están compiladas para Cualquier CPU.
¿Puedes verificar si las configuraciones de versión y depuración del proyecto son diferentes? He visto algunos casos en los que alguien acaba de agregar X a la configuración de depuración ... dejando la configuración de lanzamiento a punto. – Gishu
@Gishu: Pude rastrear la diferencia a la salida de depuración y optimizar la configuración del código - no parece haber otras configuraciones afecta este problema –
Hmm .. No hay una dirección definida aquí. a partir de algunas búsquedas superficiales, parece estar relacionado con llamadas a dll de terceros. http://bit.ly/g3iwnK Intenta obtener stacktrace y publicar en el foro de MS correcto: parece ser un área de nicho (no es exactamente el punto fuerte de SO) – Gishu