Я обновил наше программное обеспечение с vs2008 / .net 3.5 до vs2010 / .net 4.0. Все сторонние библиотеки (наиболее важные: nhibernate 2.1.2 или 3.0.0, nunit 2.5.2) по-прежнему компилируются с использованием vs2008. Когда я запускаю модульные тесты для отладочной сборки нашего программного обеспечения, все работает нормально. В сборке выпуска nunit сообщает об исключениях в 33 из 228 тестов: System.InvalidProgramException : Common Language Runtime detected an invalid program.
Это всегда происходит в одних и тех же тестах как для nunit-console, так и для тестового запуска Resharper 5.0. Когда я запускаю их с помощью команды Resharper "debug unit-tests", все тесты проходят. Не имеет значения, запускаю ли я тесты индивидуально или в пакетном режиме. Исключение всегда происходит рядом с вызовами запросов nhibernate, но я не могу сказать наверняка, так как трассировка стека сборки выпуска является немного разреженной. Он не зависит от генератора байт-кода nhibernate, такое же исключение появляется для castle и linfu. У кого-нибудь есть идеи как это отладить?
Редактировать: Удаление Spring.NET не оказало влияния на эту проблему.
Редактировать: Когда я переключаю выходные данные отладочной конфигурации выпуска на full вместо pdb only и отключаю флажок optimize code , исключение исчезает. Обе настройки обязательны, если я изменю только одну из них, ошибка останется. Однако другой набор тестов не пройден, если я только изменю один. Все библиотеки классов скомпилированы для Любой процессор .