Установленная MVC 4 Beta, теперь мои проекты MVC 3 вызывают ошибку, когда я перестраиваю все
Я только что установил бета-версию MVC 4, и теперь мои проекты 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'.
Кто-нибудь еще сталкивался с этим? Спасибо!
Ответы
Ответ 1
Я потратил весь день, пытаясь исправить это, и после того, как днем систематически вырывал ВСЕ из моего проекта, кроме одного базового представления и одного базового контроллера, он все еще бросал эту ошибку. Поэтому я начал удалять другие вещи и обнаружил, что в папке "Мои", в которой содержались MVC 3, был файл с вредоносным Web.Config.
Поиск вашего проекта для других файлов Web.Config!!!
Ответ 2
У меня была такая же проблема, и я смог решить ее следующим образом:
- Удалите сборку
System.Web.WebPages.Razor
из ссылок на проект.
- Нажмите "Сохранить все" в решении
- Добавьте сборку еще раз, убедитесь, что вы выбрали версию 1.0.0.0. В свойствах ссылки выберите True для конкретной версии.
Ответ 3
У меня есть решение для этого:
Вам нужно добавить это в свой 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>
А также скопируйте файлы bin из
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 в разделе.
Удачи!
Ответ 4
Действия по устранению этой проблемы
- Сначала найдите все файлы web.config в целом проекте
- В любом файле web.config найдите данный код ошибки 'can not be cast' и измените версию 2.0.0.0 в configSections всех файлов web.config.
System.Web.WebPages.Razor.Configuration.HostSection
- снова, если появится ошибка, найдите этот код ошибки и измените версию 2.0.0.0 во всех файлах web.config. повторите этот процесс, пока не устраните проблемы, связанные с версией.
Ответ 5
Когда вы устанавливаете MVC4, ваши проекты mvc3 будут указывать на system.web.webpages ver 2.0..
Для проектов MVC3 удалите ссылку на system.web.webpages ver 2.0.. и добавьте ссылку обратно в system.web.webpages ver 1.0..
Перекомпилируйте и передислоцируйте, и он должен снова работать...
Не уверен, почему он это делает, но он все еще бета-версия
Ответ 6
На всякий случай кто-то сталкивается с этой проблемой. Похоже, что есть несколько разных вещей, которые могут вызвать эту конкретную ошибку. Это является лучшим описанием того, что вызывает ошибку, которую я нашел. В моем конкретном случае я добавил ссылку на библиотеку через NuGet, и похоже, что в мой проект была добавлена специальная ссылка на System.Web.WebPages. Я удалил эту ссылку, перестроил, и все было хорошо.
Удачи другим с подобными проблемами!
Ответ 7
Убедитесь, что ссылки на System.Web.WebPages 2.0.0.0 в root/Web.config и root/Views/Web.config
Если каждая вещь указывает на версию 2, проверьте, есть ли у вас каталог " _bin_deployableAssemblies".
Если у вас есть это, затем щелкните правой кнопкой мыши на своем проекте и выберите вариант " Добавить расширяемые зависимости...", затем проверьте параметры MVC и Razor для обновления ваших DLL.
Ответ 8
Может помочь кому-то:
- Добавлена корректная версия DLL-совместимости между бризом 1.0 и 2.0
- Изменен файл web.config, где он говорит от 3.0 до 4.0 и 1.0 до 2.0 только для MVC и бритвы
- Другой web.config скрыт под видом, который также необходимо изменить.
Вышеуказанные три шага помогли решить проблему.
Ответ 9
Проблема в том, что у вас может быть другой файл web.config в каталоге представлений, в котором есть повторы, указывающие на старые сборки. Когда проект загружается, он пытается загрузить обе версии, а затем не работает.
Попробуйте также исправить версии в файле "View's" web.config.
Для встречного, как и я.
Ответ 10
Похоже, вам, возможно, придется обновить некоторые данные сборки в вашем web.config.
Ответ 11
Похоже, нам нужно изменить номер версии, если мы перейдем к mvc4 из mvc3.
Я только что изменил webconfig, который находится в папке Просмотры.... Необходимо изменить номер версии
<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>