Исключение Не удалось загрузить файл или сборку "System.Web.Mvc, Version = 4.0.0.1,

Возникает проблема - только когда я запрашиваю один контроллер -

Я получаю исключение:

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

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

Ответ 1

Это известная проблема. Кажется, вы недавно перешли от 3.0 до 4.0, или это приложение представляет собой новый клон из репозитория. Один единственный контроллер может не восстановить nuget. Я также столкнулся с этой проблемой. Я получил ссылку msdn и просмотр у нее был решением. Ниже приведены указанные шаги.

Проблема может быть решена путем реализации одного из следующих решения:

  • (Предпочитаемый) Установите Microsoft.AspNet.Mvc из галереи NuGet (это установит перенаправление привязки в ваш web.config). Ты можешь сделать это из диспетчера пакетов NuGet или консоли NuGet внутри Visual Студия:

    Установочный пакет Microsoft.AspNet.Mvc -Version -Project PROJECTNAME

    Версия MVC 4: 4.0.40804.0

    Версия MVC 3: 3.0.50813.1

  • Вручную обновите ссылку на System.Web.MVC.dll(не используйте тот, что есть в GAC).

    Попробуйте добавить ссылку Добавить ссылку → Ассембли → Расширения.

В любом случае убедитесь, что свойство "Копировать локальное" для для сборки установлено значение true, поэтому оно заканчивается в вашей папке bin, которая необходимых для развертывания. Существует известная ошибка NuGet, которая сбрасывает копию Локальный флаг: https://nuget.codeplex.com/workitem/4344

Установить пакет Nuget Microsoft.AspNet.Mvc для всего проекта, ссылающегося на System.Web.Mvc dll. Надеюсь, что это решает вашу проблему.

Ответ 2

Я получил эту ошибку сборки в VSO-агенте, благодаря сбою ассемблера ASP.Net. Я изменил некоторые из своих конфигураций сборки, и Visual Studio изменила выходной каталог для проекта MVC на \bin\x86\Debug или что-то подобное.

Это укусило меня раньше, и я вспомнил, что ASP.Net хочет быть только \bin.

Поэтому, когда вы получаете какую-либо "ссылку не может быть найдена" во время сборки, не забудьте проверить, что ваш выходной каталог выдает только \bin:

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

Подробнее о проблеме здесь: Изменение выходного каталога для проекта asp.net в Visual Studio

Надеюсь, это поможет кому-то.

Ответ 3

Возможно, вы можете ссылаться на ASP.NET MVC как ссылку на GAC, но может случиться так, что разные разработчики имеют другую версию MVC.

Удалите ссылки на ASP: NET MVC и добавьте ASP.NET MVC как пакет nuget.