Исключение типа ‘System.IO.FileLoadException’ произошло в Ninject.dll, но не было обработано в пользовательском коде

#c# #asp.net-mvc #asp.net-mvc-4 #visual-studio-2013

#c# #asp.net-mvc #asp.net-mvc-4 #visual-studio-2013

Вопрос:

Я следую за ASP.Net Книга Адама Фримена MVC5. Я создал проект SportsStore в соответствии с главой 7. И после создания шаблонов проекта и добавления ссылок я создаю проект и пытаюсь его отладить. Я получаю это всплывающее окновведите описание изображения здесь

И если я нажму на отмену, я получу исключение, упомянутое в вопросе. Я не в состоянии разобраться в этом. Любые предложения

введите описание изображения здесь

Я получаю вышеуказанную ошибку, когда нажимаю на отмену.

Вот стек вызовов исключения —

 Ninject.dll!Ninject.Modules.AssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable<string> filenames, System.Predicate<System.Reflection.Assembly> filter) Line 54   C#
Ninject.dll!Ninject.Modules.CompiledModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable<string> filenames) Line 81    C#
Ninject.dll!Ninject.Modules.ModuleLoader.LoadModules(System.Collections.Generic.IEnumerable<string> patterns) Line 54   C#
Ninject.dll!Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable<string> filePatterns) Line 237   C#
Ninject.dll!Ninject.KernelBase.KernelBase(Ninject.Components.IComponentContainer components, Ninject.INinjectSettings settings, Ninject.Modules.INinjectModule[] modules) Line 100  C#
Ninject.dll!Ninject.KernelBase.KernelBase(Ninject.Modules.INinjectModule[] modules) Line 60 C#
Ninject.dll!Ninject.StandardKernel.StandardKernel(Ninject.Modules.INinjectModule[] modules) Line 48 C#
  

Спортивный магазин.WebUI.dll !Спортивный магазин.WebUI.App_Start.NinjectWebCommon.CreateKernel() Строка 38 C#
Ninject.Web.Common.dll !Ninject.Web.Common.Загрузчик.Инициализировать (System.Функция createKernelCallback) Строка 50 C#
Спортивный магазин.WebUI.dll !Спортивный магазин.WebUI.App_Start.NinjectWebCommon.Start() Строка 23 C#
[Внешний код]
.
Я понимаю, что класс AssemblyNameRetriever отсутствует, и я попытался это исправить, загрузив его с github и используя этот класс. Но опять же это дает некоторые исключения. Не должен ли Ninject позаботиться об этом классе сам.

Комментарии:

1. не могли бы вы, пожалуйста, опубликовать дополнительную информацию, которую вы получаете из исключения?

2. Это может помочь, а может и нет: Нажмите Ctrl Alt E, выберите «выброшено» в разделе «исключения среды выполнения common language». Это может помочь вам точно определить вашу ошибку.

Ответ №1:

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

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

Существует также страница code project с человеком с аналогичной ситуацией. Автор пишет:

После просмотра отправленного мне кода pes1957 я смог определить, что действительно была ошибка ссылки на сборку.

В основном количество проектов, которые были в решении, содержало смесь ссылок на Entity Framework версий 5 и 6. Я обновил ссылки и web.config, чтобы показать правильный номер версии, и все компилируется правильно.

Комментарии:

1. При добавлении ссылок на мой проект я добавил System.Web.Mvc версии 4.0.0.0. Я не понимаю, почему при загрузке требуется 3.0.0.0

2. Должно быть, это другая сборка (Ninject), для которой требуется более старая версия. Вы могли бы попытаться найти более новую версию сборки для использования.

3. Я установил следующие пакеты через Nuget package manager: 1. Ninject — версия не отображается в диспетчере пакетов. Есть только один пакет под названием Ninject, и я его установил. 2. Ninject.Web.Common — то же, что Ninject. Версия не указана. В списке только один пакет. 3. Ninject.MVC5. Теперь предполагается, что это совместимо с MVC5. Я не знаю, какой пакет из этих 3 вызывает проблему. Одно из них пытается загрузить System.Web.Mvc 3.0.0.0

Ответ №2:

Та же проблема возникла в моем проекте. Похоже, что установка NInject из пакета nuget в качестве первого привела к тому, что библиотека Ninject захотела System.Web.MVC v3. После удаления всей библиотеки Ninject из nuget package manager и добавления пакета NInject.MVC5 в качестве первого и единственного пакета проблема была решена.

Ответ №3:

Я столкнулся с этой проблемой и оказалось, что мой веб-проект MVC ссылается на другой проект MVC Web API, ошибка Ninject исходила из проекта Web API. В моем случае я удалил ссылку, чтобы упростить задачу.