Не удалось загрузить файл или сборку "System.Web.Mvc, Version = 3.0.0.0" или одну из ее зависимостей

Я добавляю Ninject в проект MVC, используя следующие команды в консоли диспетчера пакетов:

Install-Package Ninject -version 3.0.1.10
Install-Package Ninject.Web.Common -version 3.0.0.7
Install-Package Ninject.MVC3 -Version 3.0.0.6

Когда я запускаю приложение, я получаю такую ​​ошибку:

Не удалось загрузить файл или сборку 'System.Web.Mvc, Version = 3.0.0.0, Culture = neutral,     PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей.     Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Ответы

Ответ 1

Обновить файл приложения web.config

Обязательно внесите эти изменения в файл приложения web.config, а не файл web.config в папке "Представления".

 <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
             <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
             <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
         </dependentAssembly>
      </assemblyBinding>
 </runtime>

Ответ 2

Если вы следуете Pro ASP.NET MVC 5, выполните следующие действия, чтобы устранить проблему:

  • В дереве проектов в VS щелкните правой кнопкой мыши References и перейдите к Manage NuGet Packages.
  • Перейдите в Online, nuget.org и найдите ninject.
  • Установите Ninject, Ninject.Web.Common и Ninject.MVC5 (говорится в книге, чтобы установить MVC3).
  • В меню Manage NuGet Packages (с шага 1) перейдите к Updates, nuget.org.
  • Обновите все модули, особенно Microsoft ASP.NET MVC.

Ответ 3

У меня есть проект Microsoft ASP.NET Web API 2.2, который использует Ninject.

Чтобы устранить проблему, мне нужно установить пакет NuGet Microsoft ASP.NET MVC 4 для моего проекта, потому что для Ninject требуется System.Web.Mvc. Поступая таким образом, Visual Studio добавит System.Web.Mvc в ссылку на проект.

Кроме того, вы должны установить Copy Local= True для свойства ссылки System.Web.Mvc, поэтому DLL будет скопирована в папку Bin. DLL не поставляется со стандартной платформой .NET Framework. Это часть пакета ASP.NET MVC.

Ответ 4

если amighty Answer не работал с вами, попробуйте

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>

это решение появилось после долгой работы с этой ошибкой

Ответ 5

Я столкнулся с этой проблемой с моим приложением.

В моем решении у нас был проект веб-приложения и проект web-api. Веб-приложение потребляло web-api.

Исправление моей проблемы состояло в том, что версия dll Mvc в веб-приложении отличалась от версии проекта web-api. Итак, всякий раз, когда я пытался попасть в web-api, это вызывало ошибку. Я просто гарантировал, что оба проекта имеют одну и ту же версию Mvc dll, и все стало нормально работать. Для этого вы можете использовать диспетчер пакетов NuGet.

Просто упомянуть об этом для ссылок на других, которые могут столкнуться с похожим сценарием.

Ответ 6

Я расширил ссылки, и когда я навел курсор на System.Web.Mvc, я заметил, что его версия 4.0.0.1. И его путь странно C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies. Мой файл packages.config показал, что соответствующий пакет nuget - это Microsoft.AspNet.Mvc.5.2.3. Ссылка кажется неправильной. Поэтому удалите ссылку из проекта. Затем удалите пакет nuget, используя следующую команду.

uninstall-package Microsoft.AspNet.Mvc -force

Обратите внимание на силу в команде.

Затем я переустановил его следующей командой

install-package Microsoft.AspNet.Mvc -version 5.2.3.0

Теперь я убедился, что ссылающаяся dll правильно указывает на nuget one

D:\Вивек\Code1\Sept17\пакеты\Microsoft.AspNet.Mvc.5.2.3\Lib\net45\System.Web.Mvc.dll

Теперь, когда я бежал, я обнаружил аналогичную проблему с System.Web.Webpages.Razor(Microsoft.AspNet.WebPages nuget) и System.Web.Razor(Microsoft.AspNet.Razor nuget). Поэтому я удалил их и переустановил соответствующие пакеты nuget.

Затем он наконец-то сработал.