Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 2.0.0.0
Я только что обновил пакеты в проекте MVC 3 (ASP.net 4), и теперь я получаю следующее сообщение об ошибке при доступе к странице в этом проекте:
Ошибка сервера в приложении "/MyApplication".
Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одной из его зависимостей. Установленное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Описание: Необработанное исключение произошло во время выполнение текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в код.
Сведения об исключении: System.IO.FileLoadException: не удалось загрузить файл или сборка" System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)
Ошибка источника:
Необработанное исключение было создано во время выполнения текущий веб-запрос. Информация о происхождении и местонахождении исключение может быть идентифицировано с использованием трассы стека исключений ниже.
След загрузки сборок: следующая информация может быть полезна для определить, почему сборка "System.Web.WebPages.Razor, Версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 ' не удалось загрузить.
=== Информация о состоянии предварительной привязки === LOG: User = IIS APPPOOL\ASP.NET v4.0 LOG: DisplayName = System.Web.WebPages.Razor, Version = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 (Полностью указано) LOG: Appbase = file:///C:/.../LOG: Initial PrivatePath = C:...\bin Вызов сборки: Microsoft.Web.Helpers, Version = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35. === LOG: Это связывание начинается с контекста нагрузки по умолчанию. LOG: Использование файла конфигурации приложения: C:...\web.config LOG: использование хоста Файл конфигурации: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config. LOG: Послеполитическая ссылка: System.Web.WebPages.Razor, Версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 LOG: Попытка загрузки нового URL-адреса Файл:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary Файлы ASP.NET/.../cb62a7b2/327a0353/System.Web.WebPages.Razor.DLL. LOG: попытка загрузки нового URL-адреса Файл:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Файлы /.../cb62a7b2/327a0353/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL. LOG: попытка загрузки нового URL-адреса Файл:///C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL. WRN: сравнение названия сборки привело к несоответствию: майор Версия ERR: не удалось завершить настройку сборки (hr = 0x80131040). Исследование прекращено.
Трассировка стека:
[FileLoadException: невозможно загрузить файл или сборку 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. установленное определение манифеста сборки не соответствует сборке Справка. (Исключение из HRESULT: 0x80131040)]
Microsoft.Web.Helpers.PreApplicationStartCode.Start() +0
[InvalidOperationException: инициализация запуска перед приложением метод Начало по типу Microsoft.Web.Helpers.PreApplicationStartCode бросил исключение со следующим сообщением об ошибке: Не удалось загрузить файл или сборку" System.Web.WebPages.Razor, Version = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из ее зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку. (Исключение из HRESULT: 0x80131040).]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 методы) +11711966
System.Web.Compilation.BuildManager.CallPreStartInitMethods() +465
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1167
[HttpException (0x80004005): инициализация запуска перед приложением метод Начало по типу Microsoft.Web.Helpers.PreApplicationStartCode бросил исключение со следующим сообщением об ошибке: Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 2.0.0.0, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 'или одна из ее зависимостей. Установленное определение манифеста сборки не сопоставить ссылку на сборку. (Исключение из HRESULT: 0x80131040).]
System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +11700896 System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, контекст HttpContext) +4869125
----------------------------------------------- --------------------------------- Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.272
В моем файле web.config и в моем приложении я ссылаюсь на System.Web.WebPages.Razor v1.0.0.0:
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
Я даже не знаю, могу ли я использовать System.Web.WebPages.Razor v2.0.0.0 с .Net 4.
Теперь, как мне узнать, что ссылается на System.Web.WebPages.Razor v2.0.0.0?
Ответы
Ответ 1
как узнать, что ссылается на System.Web.WebPages.Razor v2.0.0.0?
Просто прочитайте свою исключение stacktrace:
Calling assembly : Microsoft.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Итак, вы используете Microsoft.Web.Helpers
, который, в свою очередь, зависит от System.Web.WebPages.Razor, Version=2.0.0.0
.
Ответ 2
Так просто. В консоли менеджера пакетов Nuget:
Обновление пакета Microsoft.AspNet.Mvc -Reinstall
Ответ 3
Эта проблема началась, когда я сделал "Удалить неиспользуемые ссылки". Веб-сайт по-прежнему работал на моей локальной машине, но после публикации не работал на сервере.
![Remove unused references]()
Я исправил эту проблему, выполнив следующее:
- Откройте "Консоль диспетчера пакетов" в Visual Studio
- Удалить пакет Microsoft.AspNet.Mvc
- Установочный пакет Microsoft.AspNet.Mvc
Ответ 4
После большой боли, поиска в Google и волосах, я закончил удаление MVC 4 с помощью nuget, удалив все ссылки на MVC, бритву и инфраструктуру из веб-конфигурации, удалив DLL из папки bin, а затем с помощью nuget переустановить все. Потребовалось меньше времени, чтобы выяснить, почему DLL не соответствует.
Ответ 5
В ASP.NET MVC 4 пространство имен не является System.Web.WebPages.Razor, но System.Web.Razor
Это сработало для меня, изменив ваш web.config.
Ответ 6
Я получал ту же ошибку после добавления ненужной ссылки на System.Web.Mvc
. Я удалил все ссылки, которые мог найти, но ничего не работало. Я, наконец, удалил папку проекта bin
, и ошибка исчезла после восстановления.
Ответ 7
Я удалил ASP.NET MVC 4 с помощью панели управления Windows, а затем переустановил ее, запустив AspNetMVC4Setup.exe
(который я получил из https://www.microsoft.com/en-us/download/details.aspx?id=30683), и это устранило проблему для меня.
Другими словами, мне не нужно было использовать Nuget или Visual Studio.
Ответ 8
Я также получил эту ошибку и попробовал все, что мог найти в Интернете, и это не исчезло. В конце концов, я просто понизил MVC с 5.2.3 до 4.0.40804. Мне не нравится это решение, потому что в конечном итоге мне нужно будет использовать MVC 5, но он работает сейчас. Надеюсь, это поможет другим.
Ответ 9
Short:
У вас есть эта проблема с чистым проектом веб-API (и, следовательно, не нужна бритва), попробуйте добавить его в любом случае, перестроить, а затем удалить.
Длинная история:
У меня возникла эта проблема с совершенно новым чистым веб-API-проектом, за исключением того, что stacktrace указал "System.Web.Mvc" как Calling assembly (см. Ответ Darin).
Никакой ссылки на MVC, Razor и ничего подобного в моем проекте, хотя...
Я решил добавить пакеты MVC (AspNet.Mvc, AspNet.WebPages и AspNet.Razor), чтобы проверить, была ли следующая проблема.
Приложение WebApi было запущено отлично. Затем я удалил одни и те же пакеты, и все было в порядке.
Надеюсь, это поможет кому-то.
Ответ 10
В некоторых случаях просто установите веб-страницу 2, чтобы решить эту проблему (разрешено в моем случае - развернуть на локальную веб-страницу с помощью веб-api)
https://www.microsoft.com/en-us/download/details.aspx?id=34600
Ответ 11
Если предыдущий рабочий проект сбой внезапно с указанной ошибкой, вы можете попробовать следующее решение.
- Удалите папку bin соответствующего веб-проекта/сервиса.
- Построить
Это сработало для меня.
Ответ 12
Для подобных ошибок привязки сборки могут помочь следующие шаги:
- Щелкните правой кнопкой мыши свое решение и выберите Управление пакетами Nuget для решения...
- перейдите на вкладку "Консолидация" (последняя вкладка) и проверьте, есть ли какие-либо различия между пакетами, установленными в разных проектах внутри вашего решения. особенно обратите внимание на проекты, на которые вы ссылаетесь, которые могут иметь более низкие версии, потому что они обычно менее заметны)
- специально объедините пакеты, связанные с вашей ошибкой сборки, и обратите внимание, что многие пакеты зависят от некоторых других пакетов, таких как *.code & *.api &...
- После разрешения всех предполагаемых консолидаций перестройте и перезапустите приложение и посмотрите, разрешены ли привязки сборки.
Ответ 13
Сначала я попробовал ответить Мухаммеду Эмаду - без радости. Потом я попробовал
git clean -x -d -f
что привело меня к новой ошибке "Roslyn", которую я смог исправить, вручную отредактировав мой .csproj.
Интересно, что после того, как я прочел немного дальше вниз по странице вопроса Рослина, я нашел другое предложение с еще большим количеством голосов (Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
). Думая, что лучше реализовать это, чем вручную редактировать .csproj, я отказался от своих изменений .csproj, но обнаружил, что мое решение все еще работает.
Итак, после всего этого, мне интересно, если бы ответ Мухаммеда (на этой странице) добился цели, если бы я просто сделал чистку сначала.
Ответ 14
Я получал ту же ошибку при обновлении MVC4 до версии MVC5. Сначала я обновил вызывающую сборку, которая зависела от
> System.Web.WebPages.Razor, Version=2.0.0.0
после этого обновил файлы web.config в папке Views, обновил следующие пакеты из
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
в
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
а также обновляется
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
в
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
эти шаги работают для меня