Проблемы с запуском юнит-теста в Visual Studio - PullRequest
5 голосов
/ 23 июля 2010

Когда я запускаю сборку Release моих (VS 2008 .NET) модульных тестов, я получаю следующее исключение:

System.IO.FileLoadException: Не удалось загрузить файл или сборку 'arcVegaORM,Версия = 1.0.3856.24327, Культура = нейтральная, PublicKeyToken = 0dd85ae1d99ddbee 'или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040).

Я не получаю исключение при запуске отладочных тестов сборки.

Среда модульного теста копирует старую версию arcVegaORMсборка в папку TestResults \ Out.Я не знаю, откуда он получает старую версию - она ​​не совпадает с версией в папке bin проекта \ bin проектов.

Я начинаю думать, что есть ошибка в инфраструктуре модульного тестирования VS.NET, и что она кэширует старую версию.

Ответы [ 2 ]

2 голосов
/ 23 июля 2010

Одна вещь, которую нужно проверить, это GAC (глобальный кеш сборок).Вы можете сделать это, открыв проводник Windows и напечатав в адресной строке c: \ windows \ assembly (при условии, что ваша ОС установлена ​​на диске c).

Возможно, вместо этого он получает сборку из GAC.

Другие вещи, которые нужно сделать, это очистить решение и сделать все заново, чтобы убедиться, что у вас нет старых ссылок на сборки.

Кроме того, если это веб-приложение, оновсегда помогает остановить IIS, а затем очистить папку C:\WINDOWS\Microsoft.NET\Framework\framework_version\Temporary ASP.NET Files.

СОВЕТ
Другая вещь, которую нужно использовать, - .Net отражатель .Вы можете увидеть, какие зависимости у сборки, и вам нужно убедиться, что все они присутствуют на целевом компьютере.

Способ сделать это - установить отражатель, затем запустить его, а затем перетащить сборку вэто и вы можете увидеть зависимости сборки.Необходимо убедиться, что все эти dll-зависимости доступны на целевом компьютере, а также, если номер является подписанным сборками, номер версии должен быть правильным.

TIP2 Обратите внимание, что иногда возникают проблемы, когда сборка A связана с версией xxx сборки B, а сборка C связана с версией yyy сборки B. Другими словами, две разные сборки в вашем проекте связаны с разными версиями одной и той же сборки.Это современная версия DLL Hell.Чтобы обойти это, используйте перепривязку сборки.Вы можете прочитать об этом здесь .

1 голос
/ 04 августа 2010

Я нашел сообщение на форумах MSDN - похоже, это ошибка:

http://social.msdn.microsoft.com/Forums/en-US/vststest/thread/af530ba8-1299-4113-a5fe-4f6b009fa599

!! Если я отключу покрытие кода, то тесты будут работать нормально !!

...