Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 3.1.1

Я пытаюсь обновить проект с MVC 4/EF 5 до MVC 5/EF 6. Я обновил фреймворк с 4.5 до 4.5.1, а затем из NuGet обновил решение MVC (4.0.30506.0 до 5.1.1) и EntityFramework (от 5 до 6.1.1). Это повлекло за собой зависимость Razor (2.0.30506.0 до 3.1.1) и WebPages (2.0.30506.0 - 3.1.1). Я отредактировал папку Project и Views web.config, чтобы отразить изменения и удалил GUID из csproj.

Когда я запускаю сайт в отладке, я получаю ошибку при загрузке папки Views web.config на -  раздел name= "host" type = "System.Web.WebPages.Razor.Configuration.HostSection - строка.

"Произошла ошибка при создании обработчика раздела конфигурации для system.web.webPages.razor/host: Не удалось загрузить файл или сборку 'System.Web.WebPages.Razor, Version = 3.1.1"

У него нет проблемы в предыдущей строке (System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup) или с помощью ссылки Razor в корневой web.config. К сожалению, трассировка стека не идентифицирует вызывающую сборку.

Вызов сборки: (Неизвестно).

Все соответствующие файлы включены ниже.

Кто-нибудь знает, в чем проблема, и что еще важнее, как это исправить. Я обновил только минимальные пакеты NuGet: MVC и Entity Framework.

        packages.config:

…  
  <package id="EntityFramework" version="6.1.0" targetFramework="net451" />
  <package id="jQuery" version="2.0.2" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
  <package id="knockoutjs" version="2.2.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="5.0.0" targetFramework="net451" />
  <package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
…
  <package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net451" /> 
<!-- oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" -->
…

          web.config:       root

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
…
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.1" newVersion="5.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />       </dependentAssembly>


          web.config:       Views folder

   <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
 <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />     </sectionGroup>
…
 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
…
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>

          ERROR PAGE:

Ошибка конфигурации Описание: Произошла ошибка при обработке файла конфигурации, необходимого для обслуживания этого запроса. Ознакомьтесь с конкретными сведениями об ошибках ниже и соответствующим образом измените свой файл конфигурации.

Сообщение об ошибке Parser: произошла ошибка при создании обработчика раздела конфигурации для system.web.webPages.razor/host: Не удалось загрузить файл или сборку "System.Web.WebPages.Razor, Version = 3.1.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Ошибка источника:

Line 4:    <configSections>
Line 5:      <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Line 6:        <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 7:        <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 8:      </sectionGroup>

Исходный файл: C:\Project\views\web.config Строка: 6

След загрузки сборки: следующая информация может быть полезна для определения того, почему сборка "System.Web.WebPages.Razor, Version = 3.1.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" не может быть загружена.

=== Информация о состоянии предварительной привязки === LOG: DisplayName = System.Web.WebPages.Razor, Version = 3.1.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35  (Частичное) WRN: информация о частичной привязке была предоставлена ​​для сборки: WRN: Название сборки: System.Web.WebPages.Razor, Версия = 3.1.1, Культура = нейтральная, PublicKeyToken = 31bf3856ad364e35 | Идентификатор домена: 4 WRN: частичное связывание происходит, когда предоставляется только часть отображаемого имени сборки. WRN: Это может привести к тому, что связующее загрузит неправильную сборку. WRN: рекомендуется предоставить полностью определенный текстовый идентификатор для сборки, WRN: состоит из простого имени, версии, культуры и токена открытого ключа. WRN: см. Технический документ http://go.microsoft.com/fwlink/?LinkId=109270 для получения дополнительной информации и общих решений этой проблемы. LOG: Appbase = file:///C:\Project/ LOG: Initial PrivatePath = C:\Project\bin

Вызов сборки: (Неизвестно).

LOG: эта привязка запускается в контексте нагрузки по умолчанию. LOG: Использование файла конфигурации приложения: C:\Project\web.config LOG: Использование файла конфигурации хоста: C:\Users\xxx\Documents\IISExpress\config\aspnet.config LOG: Использование файла конфигурации машины из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: политика не применяется к ссылке в это время (частное, пользовательское, частичное или привязку сборки на основе местоположения). LOG: попытка загрузки нового файла URL:///C:/Users/xxx/AppData/Local/Temp/Temporary ASP.NET Files/root/898b17f9/848c1fdf/System.Web.WebPages.Razor.DLL. LOG: попытка загрузки нового файла URL:///C:/Users/xxx/AppData/Local/Temp/Temporary ASP.NET Files/root/898b17f9/848c1fdf/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL. LOG: попытка загрузки нового файла URL:///C:\Project/bin/System.Web.WebPages.Razor.DLL. WRN: сравнение названия сборки привело к несоответствию: незначительная версия ERR: Не удалось завершить настройку сборки (hr = 0x80131040). Исследование прекращено.

Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.18446

Ответ 1

Решил, что не стоит пытаться выяснить эти кошмарные зависимости. Я восстановил резервную копию проекта и из консоли управления пакетами (PMC) вручную обновил MVC и EntityFramework со старыми версиями, которые не вызывали зависимость Razor 3.1.1.

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

Install-Package entityframework -Version 6.0.0

Примечание. Если вы используете метод DbContext.EntityState, он был перенесен из System.Data в System.Data.Entity, обновите ваши сообщения по мере необходимости.

Если у вас есть членство Simple, вам нужно будет установить Microsoft.AspNet.WebPages.WebData(см. Не совместим ли ASP.NET MVC 5 с WebMatrix SimpleMembershipProvider?) и если у вас есть OAuth в проекте (шаблон MVC4 устанавливает OAuth в проект, я не использовал его, поэтому я смог его удалить. Если вы используете его, у вас есть больше работы для вас), вы должны удалить OAUTH (WebData имел проблему зависимости с OAUTH).

От NuGet Удалите библиотеку OAuth Microsoft WebPages

Из пакета установки PMC Microsoft.AspNet.WebPages.WebData​​p >

Обязательно выполните следующие действия в соответствии с вашим проектом: обновите MVC 4 до 5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

- ИЛИ -

Если вы хотите попробовать Обновление всех ваших пакетов, выполните следующие действия:

От NuGet Удалите библиотеку Microsoft WebPages OAuth (если вы используете SimpleMembership, см. выше)

При необходимости индивидуально обновлять: "Клиентские библиотеки и основные библиотеки Microsoft ASP.NET Web API" и   'System.Spatial для OData'

Обновить все

Из пакета установки PMC Microsoft.AspNet.WebPages.WebData(SimpleMembership, см. выше)

(см. DbContext.EntityState выше)

(web.config-root, add key = "webpages: Version" value = "3.0.0.0"; см. обновить MVC 4 до 5 выше;  другие изменения были сделаны автоматически)

(Представления web.config требуют ручных изменений)

(Тогда он смог успешно построить и открыть проект, но когда он обратился к БД, ему потребовалось обновление. (Из базы данных обновления PMC. Не удалось включить "CREATE INDEX [xxxxxxx] ON [dbo].xxxxxxxx "System.Data.SqlClient.SqlException(0x80131904): операция завершилась неудачно, потому что индекс или статистика с именем" xxxxxxxx "уже существуют в таблице" dbo.xxxxxxx".), но затем я смог успешно доступ к БД)

Ответ 2

Я смог исправить это, обновив configSection в web.config моей папки views, чтобы он соответствовал тому, что у меня было в мой packages.config. В моем случае мне нужно было настроить версию Razor на версию 3.2.7.

- WEB.CONFIG

<configSections>
 <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
 </sectionGroup>
</configSections>

- ПАКЕТЫ .CONFIG

<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />

Ответ 3

У меня была аналогичная проблема с System.Web.Mvc, когда я скопировал мой проект на компьютер под управлением Windows 8 из Windows 7 и обновил пакеты, решив его, удалив ссылку на System.Web.Mvc и добавив ее обратно просмотрев версию 5.2, которую я нашел в:

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\Microsoft.AspNet.Mvc.5.2.0\lib\net45

Это было также в: C: (папка моего решения)\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45

Нажмите кнопку клика:

Решил его, перейдя в Окно Solution Explorer в Visual Studio 2013 Express, затем "Ссылки", щелкнув правой кнопкой мыши по System.Web.Mvc и удалив. Затем я добавил ссылку обратно, щелкнув правой кнопкой мыши на ссылках и "Добавить ссылку...", но я не добавил ее в обычный способ выбора сборщиков, я нажал кнопку "Обзор" и нашел версию 5.2

Ответ 4

У меня была схожая проблема несколько дней назад, а затем, наконец, я получил решение, я просто запускаю команду update-package из консоли диспетчера пакетов, и он работает для меня.

Ответ 5

Если вы используете VS2017 или более позднюю версию, обновите все ссылки, создающие проблемы, из NuGet. Теперь создайте тестовый проект (используя шаблон MVC) и обновите все ссылки на решения из NuGet. Теперь возьмите те части (только те, чьи ссылки создают проблемы) из файла web.config (как корня решения, так и представления) из этого недавно созданного проекта и замените аналогичные части в исходном проекте web.config. Я решил аналогично в моем случае.

[NB. В процессе были некоторые другие проблемы, которые я решил удалить, переустановить некоторые ссылки из NuGet и создать отдельные проекты независимо.]