Перестал работать IntelliSense в файлах Razor (.cshtml)

Intellisense не работает в бритвенных файлах:

В моем файле web.conifg (в папке Views) видимо правильно:

<?xml version="1.0" encoding="utf-8"?>
<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.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.Optimization" />

                <add namespace="MvcSiteMapProvider.Web.Html" />
                <add namespace="MvcSiteMapProvider.Web.Html.Models" />

                <add namespace="DevTrends.MvcDonutCaching" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>

    <appSettings>
        <add key="webpages:Enabled" value="false" />
    </appSettings>

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <remove name="BlockViewHandler" />
            <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
        </handlers>
    </system.webServer>
</configuration>

21 ответ

Решение

Вот что сработало для меня после того, как IntelliSense неожиданно начал глючить и перестал корректно окрашивать код C# между тегами HTML в моих представлениях:


Просто удалите содержимое папки на %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache


В качестве дополнительного шага вы можете дополнительно запустить команду DevEnv.exe /setup в командной строке разработчика для VS (как администратор), если вышеуказанный шаг не решает проблему.

Когда intellisense перестает работать в файле бритвы, есть большая вероятность, что проблема может быть решена в три этапа:

  1. Закрыть Visual Studio
  2. Удалить файл опций пользователя решения (<solution-name>.suo)
  3. Снова откройте решение в Visual Studio.

Другие решения для вариантов intellisense можно найти здесь.

Одной из причин этого может быть то, что для ваших веб-страниц установлена ​​версия 3 для приложения mvc4, вы можете просто изменить его на версию 2 в настройках приложения web.config.

  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />

Я испытывал это в Visual Studio 2013 после обновления проекта до MVC 5.2.3. У меня сработало то, что я заменил web.config в папке "Views" следующим, поскольку пакет NuGet оставил этот web.config со многими ссылками MVC 4.0.

<?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.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.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="InvestureApps" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

У меня была эта проблема с Visual Studio 2017 - я зашел в каталог, где находится решение, и удалил папку.s vs (это скрытая папка), и это устранило мою проблему.

Мой проект был обновлен с VS2012 до VS2013, и это решило проблему для меня:

Измените "webpages:Version" в файле Web.config с "1.0.0.0" на "2.0.0.0"

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />

В моем случае решение заключалось в установке для параметра «Использовать устаревший редактор Razor для ASP.NET Core» внутри инструментов> параметры> текстовый редактор> HTML> значение true.

В моем случае проблема заключается в "Xamarin" (средства разработки мобильных приложений). После удаления Xamarin бритва Intellisense работает нормально.

Http://forums.xamarin.com/discussion/24892...

Я была такая же проблема. Хотя я использую VS 2012, есть загрузка, которая применяется как к VS 2013, так и к VS 2012. Я пробовал довольно много исправлений (связанных с web.config, удалением / переустановкой MVC через NuGet и т. Д.), Но только один, который работал для меня, устанавливал это (снова, для меня, для VS 2012)

VS 2013 с ASP.NET и веб-инструментами 2013.1 http://www.asp.net/downloads

Похоже, что есть много причин, порождающих эту проблему.

В моем случае я скопировал некоторый код / ​​файлы из другого проекта, после чего Intellisense не работает, потому что у меня есть другое пространство имен в скопированных файлах, так что Intellisense не работает. правильное пространство имен заставляет его работать снова.

Мне просто нужно было щелкнуть правой кнопкой мыши "Добавить в проект" для моего нового представления, чтобы выбрать Intellisense.

У меня была похожая ситуация, а потом я понял, что бритва не была включена в мой проект. Как только я включил его в проект (щелкните правой кнопкой мыши по файлу просмотра и выберите "Включить в проект"), обнаружился Intellisense.

В моем случае ничего из вышеперечисленного не помогло, вот что я сделал, чтобы решить мою проблему:

Загрузите проект с VS и оставьте его, а затем откройте your-project-name.csproj с помощью Notepad++ или любого другого текстового редактора, который вы хотите, и внесли некоторые изменения, например, удалите тег Content (не волнуйтесь, он вернется один раз вы включаете его в VS Solution Explorer), как только вы сохраните свои изменения, IDE Visual Studio обнаружит ваши изменения и попросит перезагрузить весь проект, нажмите "Да" и мой код IntelliSense вернется.

Я использую: Microsoft Visual Studio Professional 2019 Preview Версия 16.3.0 Preview 2.0

Надеюсь, это поможет.

Я решил эту проблему, удалив папку .vs в пути решения

Установка ASP.NET и веб-инструментов 2013.1 для Visual Studio 2012 работала для меня:

Возможно, вам придется перезапустить VS, чтобы это работало.

Установка более новой версии (ночная сборка) Resharper (2018.3 EAP 3) помогла в моем случае.

В моем случае это решило мою проблему, я просто изменил значение версии с 3 на 2. и это работает для меня.

Я только что столкнулся с очень похожей проблемой: существующее приложение не обеспечивало интеллектуальность для представлений Razor, но я мог создать совершенно новое приложение, и оно работало. Мне удалось решить эту проблему с помощью Scaffolding для создания нового контроллера и представлений для сущности. Интеллектуальность работала для новой сущности, и она снова работала для существующих!

После долгих поисков и испытаний я обнаружил, что без установки 2013 года или какой-либо обновленной версии вы все еще можете решить эту проблему раскраски на 2012 год. Установка "ASP.NET и Web Tools 2013.1 для Visual Studio 2012" решила эту проблему для меня. Закройте VS 2012 и перезапустите его после установки.

Ссылка для загрузки: https://www.microsoft.com/en-us/download/details.aspx?id=41532

Это сработало для меня. Надеюсь, это работает для вас всех.

Остерегайтесь, если у вас есть области в вашем веб-приложении, есть еще один файл Web.config в папке Areas/Views, и в моем случае этот файл конфигурации был виновником.

Кроме того, вам, возможно, придется перезапустить Visual Studio после внесения изменений в Web.config, перестройка решения, похоже, не воспринимает изменения, по крайней мере, для меня.

Ни одно из приведенных выше решений не решило мой случай. Теперь я понял, что это было из-за того, что я сделал дефрагментацию. Это вызвало эту проблему, переместив и удалив некоторые файлы. Я переустановил Visual Studio. Он работает нормально, если я снова не выполню дефрагментацию. Я надеюсь, это поможет вам

Другие вопросы по тегам