Подтвердить что ты не робот

Перейти к определению: "Невозможно перейти к символу под кареткой".

В моем проекте неожиданно возникла проблема, когда нажатие кнопки "Перейти к определению" вызывает у меня странную ошибку: "Невозможно перейти к символу под кареткой".

введите описание изображения здесь

Я впервые заметил это через некоторое время после установки Costura.Fody через NuGet. С тех пор я удалил его, но проблема не устранена. Я очищал и перестраивал решение несколько раз. В моей истории событий git нет экземпляров "Fody" или "Costura" до или после момента времени, когда это произошло, поэтому я думаю, что один из моих файлов .gitignore 'duck застрял в плохом состоянии.

Проблема возникает только в том случае, если целевое определение находится в другом файле; Перейти к определению для чего-то в текущем открывшемся файле отлично работает. Peek Definition отлично работает. Другие решения/проекты работают отлично - это только тот, который вызывает проблемы.

Я использую Visual Studio 2015. Эта проблема, похоже, не возникает в версии 2013 года.

Почему возникает эта ошибка и как ее исправить?

4b9b3361

Ответ 1

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

  • Закрыть Visual
  • Откройте консоль и перейдите в папку Visual Installation, на моем компьютере находится C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
  • выполнить devenv.exe/resetuserdata​​li >
  • Откройте Visual Studio, потребуется некоторое время для загрузки.

Отказ от ответственности: Я использую Xamarin

ВЗЯТЬ СООБРАЖЕНИЕ, ЧТО @OzSolomon и @xCasper СКАЗАЛИ:

@OzSolomon

Знайте, что это будет reset для многих ваших настроек среды IDE, включая установленных плагинов.

Удостоверьтесь, что вам это нравится, прежде чем использовать /Resetuserdata ​​p >

@xCasper

Если ваши настройки синхронизированы через Microsoft, однако, большинство из предпочтения, похоже, восстанавливаются. Я говорю больше всего, потому что это кажется, что мои привязки не восстановились и вернулись к дефолту. Все остальное, например, выбранная вами тема и варианты раскраски, макет моей IDE (где у меня есть вкладки, например), а что нет похоже, вернулись.

Ответ 2

У меня такая же проблема. Я сделал все эти шаги, упомянутые во всех вышеприведенных комментариях. Это не сработало. Но когда я закрыл Visual Studio, удалил папку ".vs" (в папке с решением), а затем снова открыла Visual Studio. Теперь он работает как шарм. Проблема исчезла.

Ответ 3

Я попробовал решение David (тот, кто нажал опцию Empty Symbol Cache), но это не сработало для меня.

Как я его разрешил?

  • Закрыть все файлы
  • Чистое решение
  • Реконструкция

Для меня эта ошибка не имеет смысла, но я решил это сделать!

Ответ 4

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

  • Закройте все открытые файлы, а затем VS
  • Инструменты- > Параметры- > Отладка- > Символы- > Пустой символ символа
  • TFS Заходите и получите последнюю версию (по какой-то причине она сработала после этого)

Не знаю, почему это происходит, но это сработало для меня, также может быть полезно очистить папку TFSTemp, как указано zvi.

ИЗМЕНИТЬ

Этот путь: %TMP%\TFSTemp может быть скопирован в Windows Explorer для доступа к TFS temp

Ответ 5

Следующее исправлено для меня:

  • В обозревателе решений щелкните правой кнопкой мыши имя решения.
  • Выберите "Чистое решение"

После того, как это успешно завершилось, я больше не получил ошибку, и мне не пришлось закрывать и снова открывать что-либо.

Ответ 6

Просто сделайте это:

  • Закрыть Visual Studio
  • Перейдите в папку проекта и удалите файл .user(может быть скрыт)
  • Открыть Visual Studio

Ответ 7

Очистите символы кеша (Инструменты > Параметры > Отладкa > Символы > EmptySymbolCache). Откройте свое решение в административном режиме.

это решило мою проблему.

Ответ 8

Ответ выше правильный, но путь немного выключен, попробуйте это вместо:

%AppData%\..\Local\Temp\TFSTemp

Ответ 9

Столкнулся с этой проблемой при использовании F12, чтобы попытаться перейти к определению метода.

Все упомянутые пункты (кроме /resetuserdata - который я не пробовал, потому что было бы /resetuserdata восстанавливаться) не работали.

Что сработало для меня:

  • Выход из Visual Studio
  • В командной строке перейдите в папку для вашего решения и запустите следующий код (это удалит ВСЕ папки bin и obj в вашем решении):

    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
    
  • Перезапустите Visual Studio. Открытие решения должно занять немного больше времени, так как теперь оно перестраивает папки obj.

После этого F12 работает!

Как примечание, я обычно помещаю это в командный файл в моей папке решения, рядом с файлом .sln. Это облегчает запуск позже!

Ответ 10

Я сделал все выше, но моя проблема не решилась (попытка открыть проект до VS 2017),

после этого я понял, что проблема была в моем файле csproj. Мой проект (MVC)

был создан VS 2015... Так что я редактирую свой файл csproj и заменяю

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

этим:

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

Это было все о версии DotNetCompilerPlatform.

(То, как я понял эту проблему, было то, что я создал новый проект MVC VS 2017 и сравнил оба файла csproj - новый и тот, который создан VS 2015 -)


Дополнительная информация по https://stackoverflow.com/users/15667/xan (так как ответы заблокированы)

Для меня (VS2019 открывает старое решение) это влияло только на один проект в решении. Импорт выглядел так:

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

Рабочие проекты имели только

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

линия, поэтому я удалил первые 2 и intelisense/перейти к определению и т.д. снова начал работать.

ОДНАКО веб-проект теперь не запускается из-за отсутствия компилятора Roslyn csc.

В конце концов, решение, которое сработало в целом, заключалось в обновлении пакетов Nuget для Microsoft.CodeDom.Providers.DotNetCompilerPlatform и Microsoft.Net.Compilers для проекта.

Ответ 11

У меня такая же проблема после обновления visual studio, так вот как я могу решить проблему.

  • Закрыть визуальную студию.
  • Удалите всю папку .vs из моего проекта.
  • Откройте визуальную студию.
  • Откройте мой проект.

Надеемся, что это поможет любому, у кого есть эта проблема.

Ответ 12

Недавно обновлен до VS 2017 15.5.0 и столкнулся с этой проблемой. Я пробовал:

  • Удаление кеша символа
  • Удаление моей .vs-папки.
  • Восстановление решения.
  • Запуск devenv/resetuserdata​​li >

К сожалению, никто из них не работал. Я заметил, что это происходит только на некоторых проектах, а не на других. В проекте, где он терпел неудачу, я закончил переключение всех версий фреймов на 4.7.1, сделал чистую/перестроенную версию, и мой "Перейти к определению" снова начал работать.

Ответ 13

Закройте Visual Studio, затем удалите скрытое имя файла .vs в этом проекте и снова откройте Visual Studio, затем создайте проект. Boom! Все хорошо!

Ответ 14

Большинство путей, отправленных другими, либо не работают, либо немного назад.

Очистите эту папку:

%localappdata%\Temp\TFSTemp

Это сработало для меня.

Ответ 15

Я бы сказал, что это связано с новым компилятором Roslyn С#, в своем трекере по проблеме github вы можете найти многих реальных разработчиков, которые сталкиваются с этим и пытаются его исправить, но в настоящее время он все еще открыт: https://github.com/dotnet/roslyn/issues/9602

Я тоже провел некоторое время вокруг этого, и я проиграл битву. Но следующее обходное решение, которое я нашел, хорошо работает для меня.

РЕШЕНИЕ

  • Измените сочетание клавиш F12 → Edit.FindAllReferences (для TextEditor). Это найдет определение и все ссылки и сфокусирует корень node (определение) в результатах поиска Symbol.
  • Теперь нажатие F12, ENTER будет делать то же самое, что и F12 раньше.

Для меня это работает даже лучше, чем просто GoToDefinition, потому что:

  • После нажатия F12 вы можете выбрать ссылку вместо определения, нажав UP или DOWN
  • Вы можете просто переключаться между ссылками и определением только с помощью этих нескольких клавиш (F12, ENTER, UP, DOWN), которые легко запомнить.

Ответ 16

  • Проверьте пространства имен двух классов.
  • Если вы добавляете классы в библиотеку классов - убедитесь, что вы используете правильный тип проекта. Существует два типа библиотеки классов. Библиотека классов (пакет) и библиотека классов. (Выберите более поздний вариант при создании файла .dll), который затем может быть добавлен, если необходимо, в другие решения.

Ответ 17

Если вы недавно установили надстройку, подумайте об удалении ее. Это то, что сработало для меня.

Ответ 18

Я также столкнулся с той же проблемой и "Найти все ссылки" для выбранного класса решил эту проблему.

Ответ 19

Я тоже наткнулся на это один раз. Что-то не так с TFS в VS 2015.

Я выполнил следующие шаги и работал

  • Очищенный кэш TFS Это может быть здесь:

    C:\Users\(Имя_пользователя)\AppData\Local\Microsoft\Team Foundation\(Версия)\Кэш

Примечание. Путь может меняться в зависимости от операционной системы, поэтому не обвиняйте меня.

  1. Опущенный символ символа

    Инструменты > Параметры > Отладкa > Символы > EmptySymbolCache

  2. Перезапуск Visual Studio (может потребоваться снова подключиться к TFS)

Это работало для меня.:)

Ответ 20

Очистить раствор. Восстановить пакеты nuget.

Ответ 21

попробуйте очистить решение или очистить проект, это сработало для меня

Ответ 22

Для меня это выглядело как шарм:

  • Я проверил предупреждения, которые появились, когда я построил проект
  • Некоторые из них упомянули о конфликте версии сборки. Visual studio предложила, чтобы я нажал на предупреждение и нажал Enter. Всплывающее окно предложило автоматически исправить проблему, и поэтому я сделал.
  • Проблема решена!

Ответ 23

Эта странная ошибка произошла со мной при импорте проекта Xamarin в VS15. Ни одно из перечисленных здесь решений не помогло мне. После дня разочарования я столкнулся с проблемой, подобной этой: Visual Studio "Найти" результаты "Нет файлов, которые были найдены для поиска. Найдите остановленный прогресс. "

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

странное решение в приведенной ссылке (нажатие Ctrl + Scroll Lock или Ctrl + Break несколько раз) решило обе проблемы для меня.

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

Ответ 24

После выполнения "devenv.exe/resetuserdata" мой VAssistX терпит неудачу, поэтому на самом деле это напоминает мне, что VAssistX может решить проблему с помощью Goto Implementation (Alt + G).

Ответ 25

Моя проблема заключалась в том, что я (полу-случайно) изменил свойство Build action проблемного файла .cs на Content. Изменение его на Compile сделало трюк, что имеет смысл.

Ответ 26

После того как я прочитал, что эта конкретная проблема была исправлена ​​в компиляторе roslyn (см. эту проблему в GitHub), я обновлен Visual Studio от версии 15.0.x до 15.3.1. Теперь он работает как шарм.

Ответ 27

Для меня работает только NO XAMARIN SOLUTIONS. Здесь предложения DIDN'T WORKS.:( Devenv.exe/resetuserdata не работает для меня.

Мое решение было: Повторно создавайте решения, проекты, папки и работы. Нет импорта. Подробно: мой проект был на VS 2015, ошибка была на VS 2017.

Ответ 28

У меня была эта ошибка довольно долго, пока я не мог ее больше терпеть, поэтому я попробовал все возможные решения выше, но ни одно не помогло мне. Я заметил, что ошибка появляется только в определенном проекте (например, как упомянуто выше), но не в других проектах. Из-за этого, поскольку ничего не работает, я снова клонировал свой проект в другую папку, и он снова начал работать.

Ответ 29

Я использую VS 2017 15.7.5, и это перестало работать для некоторых тестовых файлов. Я заметил, что это были все новые, которые я недавно добавил, и что в Solution Explorer не было стрелок, доступных для расширения и просмотра свойств/методов.

Я исключил, а затем снова включил их в свой проект, и команда перехода к определению снова заработала.

Ответ 30

По какой-то причине мой класс call_name.xaml.vb был исключен из проекта (похоже, это произошло после того, как я получил последнюю версию из TFS). Мне просто пришлось включить его снова, и теперь это работает!