Не удалось загрузить файл или сборку "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.
Затем он наконец-то сработал.