2013-11-19 4 views
0

У меня следующее сообщение об ошибке при выполнении некоторых интеграционных тестов:Как это может быть .Net не может найти сборку системы?

Сборка с отображаемым именем «System» не удалось загрузить в «Load» связывании контекст AppDomain с идентификатором 4. ПРИЧИНА Ошибка: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку «System, Culture = neutral, PublicKeyToken = b77a5c561934e089» или одна из его зависимостей. Система не может найти указанный файл.

Эти тесты использовались для работы в прошлом, и я не знаю, как может быть, что такая базовая dll не найдена. Кроме того, сборка системы была уже загружена:

enter image description here

Кстати, код выполнения создает AppDomains для выполнения комплексных тестов в случае, если это дело.

EDIT: Похоже, мы установили необходимые рамки:

enter image description here

+0

только, чтобы проверить: находятся ли файлы на самом деле по указанному пути? – Stefan

ответ

0

Я, наконец, нашел проблему: app.config был поврежден из-за «слишком широкого» поиска и замены, и кажется, что это было виновником странной загрузки системы.

2

Эта ошибка может произойти, когда тестовая среда не имеет целевой рамки установленной. Особенно, когда вы используете позднюю привязку. Это может быть так, если вы используете IOC/DI.

Обратите внимание, что это также может быть вызвано (из-за позднего связывания), что требуется другая (дополнительная) версия .NET. Если один из компонентов, используемых в программе, скомпилирован, скажем, .NET 2.0, возможно, потребуется также установить эту версию фреймворка.

+0

Проверьте мои изменения. –

2

Это может произойти, когда ваше приложение нацелено на другую версию инфраструктуры DotNet, чем установлено на машине, с которой вы тестируете. Я отмечаю, что для всех этих сборок требуется 4.0, но похоже, что вы показываете результат из окна модулей в VS2012 +, поэтому его довольно вероятно, что установлен 4.0.

Далее мы рассмотрим среду выполнения, в которой выполняется интеграционный тест. Поскольку DotNet проверяет структуру, которую вы будете использовать для ВСЕХ сборочных нагрузок, определяется исходным исполняемым файлом. Обычно это не проблема, потому что если вы используете 4.0 exe ​​и ссылаетесь на 2.0 framework, то новые обычно могут быть заменены. Однако, если вы запустите версию 2.0, она не сможет решить сборки 4.0.

Если вы используете NUnit, тогда есть некоторые трюки, которые вы можете использовать, чтобы помочь мне обойти эту проблему. http://nunit.org/index.php?p=runtimeSelection&r=2.6.3

Смежные вопросы