Как е възможно .Net да не намери сборката на системата?

Имам следната грешка, докато изпълнявам някои интеграционни тестове:

Сглобката с екранно име „Система“ не успя да се зареди в контекста на обвързване „Зареждане“ на AppDomain с ID 4. Причината за грешката беше: System.IO.FileNotFoundException: Не може да се зареди файл или сглобка „Система, култура=неутрална , PublicKeyToken=b77a5c561934e089' или една от неговите зависимости. Системата не може да намери посочения файл.

Тези тестове работеха в миналото и не знам как е възможно да не се намери такъв основен dll. Освен това сборката на системата вече е заредена:

въведете описание на изображението тук

Между другото, изпълняваният код създава AppDomains за изпълнение на интеграционни тестове, в случай че това има значение.

РЕДАКТИРАНЕ: Изглежда, че имаме инсталирани необходимите рамки:

въведете описание на изображението тук


person Ignacio Soler Garcia    schedule 19.11.2013    source източник
comment
само за да проверя: файловете наистина ли се намират на споменатия път?   -  person Stefan    schedule 19.11.2013


Отговори (3)


Тази грешка може да възникне, когато тестовата среда няма инсталирана целевата рамка. Особено когато използвате късно свързване. Това може да е така, ако използвате IOC/DI.

Имайте предвид, че може да се дължи (поради късно свързване), че е необходима друга (допълнителна) .NET версия. Ако един от компонентите, използвани в програмата, е компилиран срещу, да речем, .NET 2.0, може да се наложи да инсталирате и тази версия на рамката.

person Stefan    schedule 19.11.2013

Това може да се случи, когато вашето приложение е насочено към различна версия на рамката DotNet от инсталираната на машината, с която тествате. Отбелязвам, че всички тези необходими сборки са 4.0, но също така изглежда, че показвате изхода от прозореца на модулите във VS2012+, така че е много вероятно 4.0 да е инсталиран.

След това разглеждаме средата за изпълнение, в която се изпълнява вашият интеграционен тест. Тъй като с DotNet версията на рамката, която ще използвате за ВСИЧКИ зареждания на асемблиране, се дефинира от първоначалния изпълним файл. Обикновено това не е проблем, защото ако използвате 4.0 exe ​​и се обърнете към 2.0 рамка, тогава новите обикновено могат да бъдат заменени. Въпреки това, ако стартирате версия 2.0, тогава тя няма да може да разреши сглобките 4.0.

Ако използвате NUnit, има някои трикове, които можете да използвате, за да ми помогнете да преодолея този проблем. http://nunit.org/index.php?p=runtimeSelection&r=2.6.3

person AlSki    schedule 19.11.2013

Най-накрая открих проблема: app.config беше повреден поради „твърде широко“ търсене и замяна и изглежда, че това е виновникът за странното натоварване на системата.

person Ignacio Soler Garcia    schedule 19.11.2013