Unit test проект не может найти сборку под тестом (или зависимостями)

Когда я пытаюсь запустить проект Unit Test, я получаю следующую ошибку:

Не удалось загрузить файл или сборку ASSEMBLY_NAME, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null или одну из его зависимостей.

Система не может найти указанный файл.

Тестирование сборки находится в одном решении и каждой целевой платформе .NET 4.0. Он работал некоторое время, но сегодня я снова получил эту ошибку. Я не могу понять, что не так, потому что сообщение об ошибке не говорит мне достаточно. (например: WHICH файл не найден.)

Я попытался добавить новый тестовый проект, но также и тот, который работал некоторое время, прежде чем он дал мне такое же сообщение об ошибке.

Есть ли кто-нибудь, кто может указать мне в правильном направлении?

Изменить: В журнале диагностики, появляется следующая ошибка:

C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\TeamTest\
Microsoft.TeamTest.targets(14,5): 
error : Could not load file or assembly 'ASSEMBLY_NAME, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null' or one of its dependencies. 
The system cannot find the file specified.

Done executing task "BuildShadowTask" -- FAILED. (TaskId:671)

Done building target "ResolveTestReferences" in 
      project "ASSEMBLY_NAME.Tests.vbproj" -- FAILED.: (TargetId:985)

Ответ 1

После проверки некоторых дополнительных результатов поиска я столкнулся с этим вопросом здесь, в SA Частный Accessor для метода не найден.

После того, как я удалил файл *.accessor, мой тестовый проект прекратил жаловаться и компилироваться успешно.

Спасибо всем за помощь!

Ответ 2

Отметьте меню Build->Configuration Manager.... Все проекты должны иметь одну и ту же платформу и столбец Build.

Также вы можете посмотреть вывод окна сборки (Output), он обычно более четко указывает, какой файл не может быть найден.

Ответ 3

Существует общая ошибка при выполнении модульных тестов: папка выполнения.

Вы уверены, что ваш unit test запущен в правильной папке? Не в известной папке obj?

В папке obj скопированы только сгенерированные сборки, а не зависимости - еще раз скопируйте локальный true. Поэтому, если ваш тест запущен из этой папки, все зависимости будут отсутствовать.

Ответ 4

Я пробовал все выше, безрезультатно. Наконец, в csproj я изменил

<Private>False</Private>

to

<Private>True</Private>

по ссылкам и всем пройденным тестам.

Ответ 5

Убедитесь, что Зависимости> Изменить ссылки> Проект (ваш проект) выбраны, а не .net Сборка проекта

Ответ 6

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

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

Ответ 7

У меня была такая же проблема, и выяснилось, что копирование dll в GAC разрешило проблему. Хотя я до сих пор не понимаю, почему он не использует ссылки на проекты.

Ответ 8

Другая возможная причина заключается в том, что имя сборки проекта unit test использует то же имя, что и тестируемая сборка. (т.е. убедитесь, что ваше имя сборки unit test уникально).

Ответ 9

У меня была эта ошибка, и я исправил ее ОБНОВЛЕНИЕМ NUGET ПАКЕТОВ.

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

Когда я использовал тесты "Выполнить все" в Visual Studio, я предполагаю, что он копирует поверх "текущих" выходов проектов, а затем впоследствии dll-зависимость пакета nuget, которая перезаписывает оригиналы, если они имеют одинаковые имена. (полная догадка там)

Когда я проверил сообщение об ошибке, я увидел, что мой проект ссылался на "версию 0.0.10" зависимости, но мое решение содержало проект вплоть до "версии 0.0.30", и это огромная разница.

Ответ 10

Ссылки- > Отметить dlls- > щелкните правой кнопкой мыши- > свойства- > Скопировать Локальный в значение true