Система.ИО.FileLoadException: не удалось загрузить файл или сборку Log4net

Я добавил существующий проект в свое решение. Когда я запускаю все модульные тесты с MSTest runner, я получаю следующую ошибку на нескольких тестах:

сообщение: метод теста soandso бросил исключение: Система.ИО.FileLoadException: не удалось загрузить файл или сборку "log4net, версия 1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" или одну из его зависимостей. Определение манифеста сборки расположены не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Я знаю, что у других была такая же проблема, и есть другие вопросы и ответы на эту тему. Но я много чего пробовал, но ничего не помогало. Версия log4net мы используем 1.2.13.0.

Я проверил с FUSLOGVW.exe для ошибок привязки. Log4net появляется с добавленной сборкой и некоторой неизвестной сборкой. Ссылка log4net в сборке показывает версию 1.2.13.0, которая была добавлена с NuGet. Так что это, вероятно, зависимый сборка, которая вызывает все эти проблемы. Я попытался изменить log4net обратно на версию 1.2.12.0, но я все равно получаю то же сообщение об ошибке.

когда я запускаю все тесты с MSTest testrunner, эти ошибки появляются. Когда я проваливаю только тесты, они проходят. Когда я прогоняю их по отдельности,они тоже проходят. Я попытался перенаправить привязку, но я сделал это для сборки, которая тестируется, а не для тестовой сборки. Я не знал, как это сделать для тестовой сборки - конфигурации нет. Когда я бегу ... тесты с Resharper Test runner они также проходят (но другие тесты терпят неудачу). Сервер сборки TFS запускает MSTest-runner, поэтому мне нужно, чтобы он работал с MSTest.

кто-нибудь знает как я могу решить это?

1 ответов


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

поэтому, если у кого-то есть аналогичная проблема, используйте dotPeek или аналогичный инструмент для просмотра зависимых сборок, чтобы узнать, на какие версии сборок он ссылается.