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