Я столкнулся с той же проблемой при запуске своих юнит-тестов.
Ошибка ясно говорит о том, что проблема заключается в следующем: когда мы пытаемся загрузить сборку, загрузчик сборок .NET пытается загрузить свои упомянутые сборки на основе данных манифеста (упомянутое имя сборки, токен открытого ключа, версия).
Чтобы проверить данные манифеста:
- Откройте командную строку Visual Studio,
- Введите 'ildasm', перетащите нужную сборку в окно ILDASM и откройте представление MANIFEST. Иногда MANIFEST содержит одну сборку с двумя версиями старой версии, а также новую версию (например,
Utility, Version=1.2.0.200
и Utility, Version=1.2.0.203
). На самом деле упомянутая сборка Utility, Version=1.2.0.203(new version)
, но, поскольку манифест содержит даже Utility, Version=1.2.0.200(old version)
, загрузчик сборок .NET пытается найти этот версионный DLL-файл, не может найти его и выдает исключение.
Чтобы решить эту проблему, просто перетащите каждую из зависимых от проекта сборок в окно ILDASM отдельно и проверьте, какая зависимая сборка содержит данные манифеста со старой версией сборки. Просто пересоберите эту зависимую сборку и верните ее обратно в ваш проект.