Установил MVC 4 Beta, теперь мои проекты MVC 3 выдают ошибку, когда я перестраиваю все - PullRequest
31 голосов
/ 22 февраля 2012

Я только что установил MVC 4 Beta, и теперь мои проекты MVC 3 (которые я еще не конвертировал в 4) выдают ошибку, когда я перестраиваю все:

Error 18 [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. Type B originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.

Кто-нибудь еще сталкивался с этим?Спасибо!

Ответы [ 11 ]

59 голосов
/ 05 апреля 2012

Я потратил весь день, пытаясь это исправить, и после полудня систематически вырывал ВСЁ из моего проекта, кроме одного базового представления и одного базового контроллера, он все еще выдавал эту ошибку.Поэтому я начал удалять другие материалы и обнаружил, что в моей папке Views есть мошеннический файл Web.Config с содержимым MVC 3.

Поиск в вашем проекте других файлов Web.Config !!!

6 голосов
/ 03 декабря 2012

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

  • Удалить сборку System.Web.WebPages.Razor из ссылок проекта.
  • Нажмите Сохранить все в решении
  • Добавьте сборку еще раз, убедитесь, что вы выбрали версию 1.0.0.0.Выберите True для определенной версии в ссылочных свойствах.
4 голосов
/ 28 февраля 2012

У меня есть решение для этого:

Вам необходимо добавить это в ваш mvc 3 web.config:

    <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
    </configSections>
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />

        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.WebPages" />

        <!-- Your namespace here -->
      </namespaces>
    </pages>
  </system.web.webPages.razor>

А также скопируйте файлы из

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies

в папку вашего проекта

Если вам нужно развернуть проект mvc 4 на сервере, на котором вы не установили mvc 4, вам нужно то же самое, но изменить версию с 1.0.0.0 на 2.0.0.0 в разделе раздела.

Удачи!

3 голосов
/ 14 ноября 2013

Действия по устранению этой проблемы

  1. Сначала найдите все файлы web.config во всем проекте
  2. Во всем файле web.config найдите указанный код ошибки «невозможно преобразовать» и измените версию 2.0.0.0 в configSections всех файлов web.config. System.Web.WebPages.Razor.Configuration.HostSection
  3. еще раз, если ошибка возникает, найдите этот код ошибки и измените версию 2.0.0.0 во всех файлах web.config. повторяйте процесс до устранения проблем, связанных с версией.
1 голос
/ 21 марта 2013

Проблема в том, что у вас может быть другой файл web.config в каталоге Views, в котором есть записи, указывающие на старые сборки.Когда проект загружается, он пытается загрузить обе версии, а затем терпит неудачу.

Попробуйте также исправить версии в файле "View's" web.config.

Для встречного, как я.

1 голос
/ 10 января 2013

Может помочь кому-нибудь:

  1. Добавлена ​​правильная версия DLL, конфликтующая между бритвой 1.0 и 2.0
  2. Изменен файл web.config, в котором говорится только о 3.0 до 4.0 и 1.0 до 2.0для MVC и бритвы
  3. Еще один скрытый под видом web.config, который также необходимо изменить.

Вышеупомянутые три шага помогли решить проблему.

1 голос
/ 17 июля 2012

Убедитесь, что ссылки на System.Web.WebPages: 2.0.0.0 в root / Web.config и root / Views / Web.config

Если все указывает на версию 2, проверьте, есть ли у вас каталог " _bin_deployableAssemblies ".

Если он у вас есть, щелкните правой кнопкой мыши свой проект и выберите параметр " Добавить развертываемые зависимости ... ", затем проверьте параметры MVC и Razor, чтобы обновить библиотеки DLL.

1 голос
/ 03 июня 2012

На всякий случай, если кто-то еще столкнется с этой же проблемой. Похоже, есть несколько разных вещей, которые могут вызвать эту конкретную ошибку. Это - лучшее описание того, что вызывает найденную мной ошибку. В моем конкретном случае я добавил ссылку на библиотеку через NuGet, и похоже, что в мой проект была добавлена ​​конкретная ссылка на System.Web.WebPages. Я удалил эту ссылку, перестроил, и все было хорошо.

Удачи другим с подобными проблемами!

1 голос
/ 31 мая 2012

При установке MVC4 ваши проекты mvc3 будут указывать на system.web.webpages ver 2.0 ..

Для ваших проектов MVC3 удалите ссылку на system.web.webpages ver 2.0 .. и добавьтессылка на system.web.webpages ver 1.0 ..

Перекомпилируйте и повторно разверните, и это должно работать снова ...

Не уверен, почему это происходит, но это все еще бета-версия установки

0 голосов
/ 27 сентября 2013

Похоже, нам нужно изменить номер версии, если мы перейдем на mvc4 с mvc3.

Я только что изменил webconfig, который находится в папке Views .... Нужно изменить номер версии

<configuration>
  <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>
<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>


 <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=**4**.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=**4**.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=**4**.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=**4**.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...