"Перейти к определению" в Visual Studio вызывает только метаданные

Я работаю в веб-проекте в Visual Studio 2008. Когда я нажму F12 (или щелкните правой кнопкой мыши и выберите "Перейти к определению" ), Visual Studio последовательно перейдет в файл метаданных вместо перехода к исходному.

Некоторые точки:

  • Весь исходный код - С#, есть нет VB.Net
  • Все проекты находятся в одном и том же Решение
  • Да, все это проект ссылка (проверенная и перепроверены)
  • Я пробовал Clean/Rebuild Решение (даже до точки освобождения каталога Temp, Временный каталог файлов ASP.NET, и т.д.).

Кто-нибудь еще видел это поведение и/или знает, как его исправить?

Ответ 1

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

Ответ 2

Это происходит, когда вы не добавляете ссылку в качестве проекта, а указываете на dll или exe, используя вкладку "Обзор" в диалоговом окне "Добавить ссылку". Если вы добавите ссылку на вкладку "Проекты", вы должны перейти непосредственно к исходному коду при выборе "Перейти к определению".

Однако, если вы установите ReSharper, вы перейдете к исходному коду, даже если вы добавили ссылку на dll/exe, используя Просмотреть вкладку.

Ответ 3

Похоже, что его нужно настроить и в Resharper. Моя Visual Studio не переходит к исходному коду .NET Framework, пока я не включу его в Resharper.

Установки Resharper, чтобы разрешить переход к внешнему источнику

Ответ 4

1. закройте свое решение.

2. удалите скрытый файл <name of the solution>.suo в папке, в которой находится файл вашего решения <name of the solution>.sln.

3. откройте свое решение.

4. восстановить ваше решение.

Ответ 5

В Visual Studio часто возникает проблема перехода на метаданные, а не на ваш проект, если вы меняете местоположение, где вы строите проект, т.е. у вас может быть несколько версий для проверки.

Просто удалите ссылку и сразу добавьте ее, и все будет отсортировано.

Ответ 6

Для тех, кто использует VS 2017 (я сейчас в версии 15.3.4), выполните следующие простые шаги:

  • Откройте решение в проводнике Windows и закройте Visual Studio
  • В меню проводника выберите "Просмотр" и убедитесь, что отмечен флажок "Скрытые элементы"
  • Перейдите в подпапку .vs\[your solution name]\v15
  • Удалить файл .suo
  • Перезагрузите VS и создайте свое решение.

Это исправило это для меня: F12 открыл фактический исходный файл, а не версию "из метаданных".

Ответ 7

Отмеченное решение не всегда работает. Вы должны убедиться, что указанный GUID проекта в файлах проекта является правильным GUID для проекта, который вы пытаетесь установить. В некоторых случаях Visual Studio позволяет им не синхронизироваться. Вы можете получить GUID проекта из файла проекта с помощью текстового редактора. Итак, если проект A-справочный проект B. Откройте проект B.csproj в текстовом редакторе, скопируйте GUID проекта из тега. Затем откройте проект A.csproj в текстовом редакторе и убедитесь, что вы используете правильный GUID. Найдите название проекта "B" в этом случае. Это должно быть. Замените идентификатор GUID в теге на правильный. Сохраните и перезагрузите. Конечно же, убедитесь, что ссылки на ваши проекты удалены. Вам нужны только ссылки на проект.

Ответ 8

Я убил все экземпляры VS, удалил SUO, запустил sln, и это сработало для меня...

Ответ 9

Удалите ссылочную dll, Build (получите ошибки), ADD Ссылка (вы удалили), затем снова создайте... F12 на вашей функции должен работать (работал у меня).

Ответ 10

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

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

  • Закройте решение.
  • Удалите файл базы данных intellisense для решения:.ncb
  • Откройте решение.
  • Восстановите решение.

(Я считаю, что либо шаг 3, либо 4 восстанавливает файл базы данных intellisense, когда он отсутствует)

Intellisense, "перейдите в defintion" и "найдите все ссылки", должен снова работать.

Ответ 11

В моем случае (с использованием Visual Studio Professional 2015), когда я отключил конструктор XAML, F12 перестала работать. Как только я вернусь к изменениям и перезапущу Visual Studio, F12 снова работал.

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

Ответ 12

Симптом:

Visual Studio 2010 Ultimate неоднократно отказывалась находить ссылки на функции, #defines, includes и т.д. при использовании функций "Перейти к определению" или "Перейти к декларации" или "Найти все ссылки" - странно работает Intellisense.

Fix:

  • Закрыть Visual Studio
  • Удалить (переименовать, если вы хотите быть консервативным).sdf файл.
  • Reopen Visual Studio

Файл .sdf автоматически будет перестроен путем анализа файлов include в вашем решении

Ответ 13

Для меня решение GUID не работает, и я не смог найти файл .ncb. (Или, может быть, я ленив и не выглядел достаточно сложно, но это не важно.) Восстановление и перезапуск визуальной студии тоже не помогло.

То, что я сделал, это закрыть визуальную студию и удалить DLL и .pdb, на которые ссылаются в верхней части файла метаданных, к которым привязывалась моя intellisense. В моем случае это означало, что я удалил свой .dll и его .pdb файл из Utilities/bin/Release. (Утилиты - это название проекта .dll, с которым у меня возникли проблемы.) Затем я перезапустил визуальную студию и перестроил .dll, а затем все решение. Больше проблем!

Ответ 14

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

Ответ 15

Я сделал все предлагаемые шаги, но ничего не изменилось, а затем в конце концов  щелкните правой кнопкой мыши и добавьте меню ссылок, вкладку проекта

  • просто не выбрал ссылочный проект.
  • сохранить решение.
  • выберите тот же проект.
  • Восстановите решение.

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

Ответ 16

Ниже были шаги для меня.

  • Перейдите в файл .csproj.
  • Откройте его в Блокноте. Перейдите к строке, где ссылается dll. <Reference Include="">
  • Удалить строку

    <SpecificVersion>False</SpecificVersion> 
    or 
    <SpecificVersion>True</SpecificVersion>
    

Ответ 17

После удаления DLL файлов из Visual Studio сначала и добавления их обратно вручную из Solution Explorer → Website → Add → Reference и включения 32-битных приложений в IIS это исправило для меня.

Ответ 18

  • щелкните по меню веб-сайта из VS.
  • Добавить ссылку...
  • Нажмите вкладку проекта из диалогового окна
  • Выберите ddl
  • Нажмите кнопку ok

Ответ 19

В моем случае я только что изменил

<mvcBuildViews>

в "true" на моем файле .csproj моего сайта (чтобы найти ошибки компиляции в файлах просмотра Razor: http://forums.asp.net/t/1909113.aspx?How+to+have+Visual+Studio+2012+returned+compile+errors+on+razor+syntax+error+in+asp+net+web+page+2+), и когда Затем я построил, я получал ошибки от своего в моем каталоге /obj/Debug/. Из любого из этих файлов (которые были устаревшими), щелкнув правой кнопкой мыши и выбрав "Перейти к определению", вы получите мне [метаданные].

Итак, для меня ни одно из решений здесь не работало, потому что я не начинал с файла, который был на самом деле в моем проекте. Удалил весь каталог /obj/Debug/, ошибки исчезли, и из любого нормального файла я могу правильно использовать Go To Definition.

Ответ 20

Я просто столкнулся с этой проблемой на VS 2013. Что-то, что я мог (не?) не изолировать, менял GUID в файле CSPROJ. Поскольку файлы CSPROJ отмечены в SVN, я не мог просто изменить GUID на моем локальном dev. Вместо этого я постоянно SVN возвращал локальные изменения каждый раз, когда это происходило.

Во-первых, мне пришлось решить проблему с изменением GUID.

  • Верните CSPROJ в зарегистрированную версию.
  • Откройте CSPROJ через текстовый редактор, а не VS.
  • Извлечь значение из нетронутого файла CSPROJ.

    {B1234567-5123-4AAE-FE43-8465767788ED}

  • Откройте файл SLN через текстовый редактор, а не VS.

  • Найдите ссылку на проект в решении.

    Project ( "{FAE12345-3210-1357-B3EB-00CA4F396F7C}" ) = "Some.Project", "....\assemblylies\Some.Project\Some.Project.csproj", "{B7654321-5321 -4AAE-FE3D-ED20900088ED}" EndProject

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

Это должно решить первую проблему, но посадка "Перейти к определению" в метаданных не решена. В нашем файле SLN есть мастер-проект (наш веб-сайт), поэтому его запись в файле SLN должна содержать запись ProjectSection с несколькими значениями GUID. Вот пример:

ProjectSection(ProjectDependencies) = postProject
{AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} = {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD}
EndProjectSection

Обратите внимание, что отсутствующий идентификатор GUID в этой коллекции является тем, который был из моего первоначального проекта.

  • Добавьте отсутствующий идентификатор GUID в качестве последней записи между ProjectSection и EndProjectSection. Формат выглядит как строка, и это {GUID} = {GUID}.
  • Сохраните файл.
  • Откройте свое решение.
  • Щелкните правой кнопкой мыши ссылку в новом проекте и выберите "Перейти к определению".

Ответ 21

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

Ответ 22

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

  • Щелкните правой кнопкой мыши по dll в справочной папке в вашем решении исследователь
  • Удалить файл dll
  • Щелкните правой кнопкой мыши папку Reference, затем
  • Добавить ссылку на файл dll снова

Ответ 23

Я столкнулся с той же проблемой, и один из коллег дал мне следующее решение, и это сработало! Если для вас ничего не работает,

  • Удалите все ссылки и добавьте их обратно (убедитесь, что путь правильно)
  • Перейдите в свойства Решение и перепроверьте проект Зависимости всех проектов. Убедитесь, что проект, который вы будете использование добавляется как зависимое в проекте, в котором вы работаете на.

Ответ 24

Лучше догадаться, что у вас нет отладочной информации. Возможно, у вас есть несколько копий вашей сборки на диске, и у нее нет файла .pdb.

Сделайте поиск ваших имен сборки из ваших проектов и удалите их все и перестройте.