MVC Razor view Intellisense сломан в VS 2013/2015/2017
У меня есть существующий проект, написанный на VS2010, который при загрузке в VS2010 работает отлично.
Когда я загружаю этот же проект в VS2013, представления MVC Razor содержат много ошибок, как если бы файл конфигурации отсутствовал в папке представлений.
Похоже, что он неправильно загрузил редактор Razor, используя файлы конфигурации из корня и папки представлений, и вместо этого выдает мне ошибки вроде...
The name 'model' does not exist in the current context
а также...
'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'LabelFor'
and no extension method 'LabelFor' accepting a first argument of type
'System.Web.WebPages.Html.HtmlHelper' could be found
(are you missing a using directive or an assembly reference?)
...
Есть идеи, что вызвало бы это?
Изменить: Конфигурировать файлы по запросу....
Из основного файла web.config (не все, так как он слишком велик для публикации)
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Ninject" culture="neutral" publicKeyToken="c7192dc5380945e7" />
<bindingRedirect newVersion="3.0.0.0" oldVersion="0.0.0.0-3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.EnterpriseLibrary.Validation" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect newVersion="5.0.505.0" oldVersion="0.0.0.0-5.0.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Файл конфигурации в "~/Views/" ...
<?xml version="1.0"?>
<configuration>
<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="Emedia.Common.Mvc.Views.Helpers"/>
<add namespace="Emedia.Common.Mvc.Views.Extensions"/>
<add namespace="Emedia.Common.Utilities"/>
<add namespace="Emedia.Common.Utilities.Extensions"/>
<add namespace="Emedia.Common.Mvc.Controllers.Helpers"/>
<add namespace="Emedia.Resources.Service"/>
<add namespace="Emedia.Subscriber.Controllers"/>
<add namespace="Emedia.Subscriber.Controllers.ViewModels"/>
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
23 ответа
Я подумал о редактировании поста @ChrisMoschini, но подумал, что он достаточно другой. Моя проблема заключалась в том, что я запустил новое приложение MVC5 и слепо скопировал слишком много настроек web.config из старого проекта MVC3, который я хотел использовать в качестве шаблона / отправной точки. Это привело к тому, что в моем файле web.config появились ссылки на недопустимые версии.
Чтобы исправить это, я создал еще один новый проект MVC5 и убедился, что следующие значения конфигурации в моем плохом проекте соответствуют ванильному, неизмененному приложению MVC5. Опять же, не копируйте вслепую эти номера версий. Просто убедитесь, что они соответствуют ванильному приложению MVC той версии, которую вы пытаетесь заставить работать
в корне web.config
:
<appSettings>
...
<add key="webpages:Version" value="3.0.0.0"/>
...
</appSettings>
<system.web>
...
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime targetFramework="4.5.1"/>
...
</system.web>
в Views\Web.config
:
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.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>
<system.web.webPages.razor>
...
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
...
</system.web.webPages.razor>
Несколько моих проектов имели эту проблему в течение нескольких месяцев. Я пробовал так много обходных путей, и ничего не получалось. Проблемы, казалось, были с проектами: тот же проект будет иметь проблему Intellisense на всех ПК с Visual Studio. Наконец, я прочитал этот пост: http://www.dennisonpro.info/managing-intellisense-in-razor-views-with-mvc-5-using-custom-builds-in-visual-studio-2013/
В нашем случае причина была в том, что каталог вывода всех этих проектов был изменен на "bin". Изменив значение OutputPath обратно на "bin" (и очистив проект, закрыв, а затем снова открыв Visual Studio), я вернул Intellisense.
Сообщение, упомянутое выше, также предоставило обходной путь для поддержки отдельного выходного каталога, сохраняя при этом Intellisense.
Надеюсь, это поможет кому-нибудь когда-нибудь.
MS говорит, что для VS2013 "файлы Intellisense для Razor (CSHTML и VBHTML) ограничены разметкой HTML".
Но если вы добавите эти две строки в каждый файл.cshtml, intellisense снова будет работать для MVC3 в VS2013:
@using System.Web.Mvc.Html
@inherits System.Web.Mvc.WebViewPage<dynamic>
Вместо dynamic
Вы можете указать тип вашей модели.
Я обновил проект MVC3 до MVC5 и сделал все возможное, чтобы избежать единственно верного ответа на эту проблему, который Microsoft рекомендует:
Начните с нового проекта и перенесите полученные биты в существующий проект.
Этот процесс - большая трата времени, и похоже, что Microsoft должна сделать реальный путь обновления жизнеспособным, но я здесь, чтобы сказать вам, что проблема здесь эмоциональная, а не техническая: вам действительно нужно просто создать новый проект MVC5 и замените следующее результатом нового проекта MVC5:
\Packages\*
\Project\Project.csproj
\Project\packages.config
\Project\Web.Config
\Project\Views\Web.Config
\Project\Areas\*\Views\Web.Config
Если вы этого не сделаете, вы просто будете вечно ходить кругами, пытаясь найти ту обстановку, которая взрывает вещи. В нашем случае у меня были Web.Configs, полностью идентичные недавно созданному Razor Intellisense-работающему проекту MVC5, я запустил все возможные инструменты обновления, которые вы можете найти, назовите это. Intellisense отказался работать.
После просто сдувания.csproj, web.configs и т. Д., Intellisense волшебным образом вернулся к жизни. Различая две стороны, ни один из ответов, которые я нашел где-либо, не совпадает с тем, что я вижу. Web.Configs почти идентичны, и отличающиеся биты не должны иметь значения. Главное изменение - это то, что находится в \Packages\ - исчезли многие старые библиотеки Razor, MVC и WebPages. Это может быть хитростью, но пропустите это и сэкономьте много времени: просто создайте новый проект MVC5 и перепишите вышеперечисленные файлы. Это единственный вменяемый метод обновления.
Я недавно решил эту проблему сам. Я обновил MVC4 до MVC5 (в частности, 5.1). Обновление до более новой версии MVC вызвало этот хаос, и я часами пытался его решить. Незначительные изменения в Web.Config
В файле исправлена проблема с intellisense!
Вы сказали, что проект работает в VS2010, но не в 2013 году? Смотрите этот ответ здесь.
Я рекомендую перейти на MVC5. Это не больно, и обновление должно быть довольно плавным.
Если вы обновляетесь до MVC5 и по-прежнему не получаете intellisense, вам необходимо обновить Web.Config
файл вручную, так как обновление может сделать это неправильно!
Вот модифицированная версия вашего Web.conifg
в папке / Views, которая должна отражать изменения для MVC5.
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.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>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.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="Emedia.Common.Mvc.Views.Helpers"/>
<add namespace="Emedia.Common.Mvc.Views.Extensions"/>
<add namespace="Emedia.Common.Utilities"/>
<add namespace="Emedia.Common.Utilities.Extensions"/>
<add namespace="Emedia.Common.Mvc.Controllers.Helpers"/>
<add namespace="Emedia.Resources.Service"/>
<add namespace="Emedia.Subscriber.Controllers"/>
<add namespace="Emedia.Subscriber.Controllers.ViewModels"/>
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
Если обновление не вариант, то я боюсь, что вам нужно будет продолжать использовать VS2010, если вы хотите поддержку IntelliSense для MVC3. Тем не менее, я настоятельно рекомендую перейти на MVC5.
Для любого другого, кто мог бы наткнуться на это, я не нашел ни одного из предыдущих ответов, чтобы действительно решить мою проблему или не относиться к ней. В любом случае, способ, который решил это для меня и заставил intellisense снова работать, состоял в том, чтобы пойти в мою папку bin и удалить все файлы там, а затем очистить / восстановить, и это было исправлено.
Когда я создавал новый проект, intellisense работал нормально, но по некоторым причинам он не работал в нашем текущем проекте. Единственное отличие, которое я нашел в Views/Web.config
файл был, что у нас была версия MVC 5.2.0.0, и новый проект имел 5.0.0.0. То, что работало для нас, должно было изменить это:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.0.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />
к этому:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.2.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />
Сочетание следующего помогло решить проблему для меня:
- Создание нового проекта MVC
- Сравнение версий в представлениях web.config файлов существующих и новых проектов
- Исправление версий соответственно (см. Ниже)
- Удаление всех файлов в папке bin
- Чистка раствора
- и, наконец, восстановление решения
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.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>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false" />
</appSettings>
[...]
Этот вопрос был решен, но я добавляю это для будущих людей, так как ничего из вышеперечисленного не помогло мне:
Попробуйте запустить Visual Studio от имени администратора.
Каким-то образом, когда я пытался удалить свои пакеты nuget (которые содержат все необходимые ссылки, такие как System.Web.Mvc, мне сказали, что мне нужно разрешение от MyPC\Me. Смешно! (Я единственный пользователь и только админ...) В любом случае, работая от имени администратора, позвольте мне хотя бы получить доступ к тем файлам, в которых исправлен intellisense.
У меня было это снова и снова; Я нахожусь на моем третьем новом проекте, и это сводит меня с ума! Я думаю, что, возможно, нашел причину проблемы. Я добавил файлы, но не включил их в Visual Studio. Теперь я выбрал просмотр всех файлов:
Затем для всех моих папок, которые я добавил, я включаю их:
Проблема в том, что это проявляется только тогда, когда вы открываете сайт MVC как проект, а не когда вы открываете его как сайт.
В MVC 5, если вы попытаетесь добавить область, просто добавив папку в области Области и подпапки для контроллеров, представлений, моделей и т. Д., У вас не будет файла *AreaRegistration.cs, который регистрирует область, или файла web.config. в представлениях, которые позволяют VS понять элементы бритвы, которые вы включаете в свои представления. В результате intellisense не работает в вашем представлении для таких вещей, как ViewBag. Если у вас есть рабочие примеры этих файлов в других областях, вы можете скопировать их и обновить соответствующим образом - или вы можете начать заново с вашей Области, щелкнув правой кнопкой мыши на Области и выполнив Add - Area, которая создаст эти файлы для вас.
Обновите пакеты NuGet с помощью консоли диспетчера пакетов в Инструменте, Диспетчере пакетов библиотеки.
В командной строке..PM> Update-Package
Это обновит пакеты NuGet, проверит текущую версию System.web.MVC и обновит эту версию в файле web.config в папке Views.
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="System.Web.Webpages"/>
</namespaces>
</pages>
</system.web.webPages.razor>
Закройте решение и снова откройте.
Надеюсь, это работает!
Я изменился с
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.2.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />
к этому:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.0.0.0, Culture=neutral, PublicKeyToken=123JHJF56AD364E35" />
И это сработало!
Со временем у меня возникло множество других проблем на компьютере из-за сбоя сетевого сервера, и в итоге я переустановил Visual Studio.
Это, видимо, решило проблему... Я понятия не имею, как, но это произошло.
Интересно, может быть, в моем случае это была просто неисправная установка, а не типичная проблема.
По этой причине я буду отмечать это как ответ, но +1 ко всем остальным ответам, поскольку они являются потенциально хорошими ответами на эту проблему.
Однако я обнаружил, что Microsoft четко заявляет, что Visual Studio 2013 не поддерживает intellisense на более низких версиях MVC, чем 4, поэтому, если вы используете MVC 3, обновите проект, если вы используете более новую версию MVC, и ничего больше не работает, попробуйте переустановить Visual Studio.,
Также стоит отметить... MVC теперь является пакетом nuget, поэтому не устанавливайте MVC из списка переадресации загрузки, что позволит VS выяснить это для вас.
В моем случае я переместил все представления из Area в корневую папку Views, так что я думаю, что VS запутался в том, где находится мой web.config. Я переименовал его в Web.config из web.config, а затем произвел редактирование содержимого конфигурации (например, изменил номер версии dll фабрики хоста бритвы с 5.2.2.0 до 5.2.3), но затем изменил его назад.
Затем я пошел на прогулку в течение 30 минут и вернулся и перезапустил VS, и это было исправлено!
Я использую Visual Studio 2012. Я попробовал все вышеперечисленное, но, наконец, проблема решена путем установки:
ASP.NET и веб-инструменты 2013.1: http://blogs.msdn.com/b/webdev/archive/2013/11/18/announcing-release-of-asp-net-and-web-tools-2013-1-for-visual-studio-2012.aspx
Я пользуюсь VS 2017 professional, и я попробовал почти все ответы в этом посте, а также ответы в этом посте, но у меня ничего не получалось. Вчера обновил VS, до версии 15.2 (26430.6) Release
и intellisense вернулся в мои файлы cshtml!
Попробуйте установить CopyLocal
собственность System.Web.Mvc
ссылка на true
, Иногда это помогает с Intellisense.
Я столкнулся с подобной проблемой. У меня был проект MVC 5, созданный с помощью VS2015 Community Edition, и мне нужно было работать с VS2013 Ultimate. Удаление следующего <system.codedom></system.codedom>
Блок из корневого файла web.config - это то, что наконец позволило IntelliSense снова работать в моих представлениях Razor на VS2013.
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
У меня была эта проблема в течение шести месяцев, и я просто понял, что мне нужно переместить @model
директивы к началу страниц. Раньше они были внутри блоков кода.
Я попробовал почти все решения, но не получил intellisense, и в конце концов я нашел решение:
- Перейти в обозреватель решений
- Щелкните правой кнопкой мыши на
.cshtml
файл или любой файл просмотра - Выберите опцию "Открыть с помощью" и установите HTML Editor(по умолчанию) установленным по умолчанию
При обновлении с MVC 3 до 5 я обнаружил, что в моем корневом каталоге Web.config ключ appSettings webpages:version
был установлен на 2.0.0.0
, Меняя это на 3.0.0.0
исправил эту проблему.
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
</appSettings>