Visual studio нет ссылок

Обновлено: 05.07.2024

Как я могу отобразить ссылки в верхней части объявления метода?
Я искал его в свойствах Visual Studio, но не смог его найти.

Также случай для Visual Studio 2019 Preview. Включите CodeLens вручную

В Visual Studio Professional или Enterprise Включите CodeLens, выполнив

Инструменты → Параметры → Текстовый редактор → Все языки → CodeLens

Это недоступно в версии для сообщества

@ FADI1987 какой экземпляр Visual Studio вы используете? CodeLens недоступны для Community Edition. @ FADI1987 эта функция (CodeLens) недоступна для Community Edition. Но я ничего не могу сказать о ReSharper (я не знаю). Они забрали это в 2017 году? У меня есть это в Сообществе 2015 года. да, это не круто - в VS2015 сообществе есть ссылка ссылка доступна, но не в VS2017 сообществе :( . и я подумал, что Community Edition должен был быть полный пакет

Не повезло с линзой кода в выпусках сообщества.

Нажмите Shift +, F12 чтобы найти все ссылки.

Вы также можете попробовать Ctrl + K + R вместо Shift + F12 У меня Visual Studio Community 2017 (v 15.9.9), и у него уже есть функция линз кода по пути, описанному @ISHIDA @Pimenta он есть, но при проверке ссылки по-прежнему не отображаются. Я на версии 15.9.10

Для отображения ссылок в верхней части метода необходимо включить параметр CodeLens в Visual Studio Professional и Visual Studio Enterprise .

Используйте следующие шаги, чтобы включить его.

1 . Перейдите в Инструменты и затем выберите Параметры :

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

2 . Затем выберите текстовый редактор -> Все языки -> CodeLens

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

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

3 . Установите флажок, чтобы включить кодовый объектив:

Диалоговое окно "Диспетчер ссылок"

В левой части диалогового окна "Диспетчер ссылок" отображаются различные категории в зависимости от типа проекта:

Сборки с подгруппами Платформа и Расширения.

COM содержит список всех COM-компонентов, ссылки на которые можно добавить.

Проекты

Общие проекты

Windows с подгруппами Ядро и Расширения. Для просмотра ссылок в Windows SDK и пакетах SDK расширений можно использовать Обозреватель объектов.

Обзор с подгруппой последних ссылок.

При разработке проектов С++ элемент Обзор может не отображаться в диалоговом окне "Диспетчер ссылок".

Добавление ссылки

В обозревателе решений щелкните правой кнопкой мыши узел Ссылки или Зависимости и выберите команду Добавить ссылку. Вы также можете щелкнуть узел проекта правой кнопкой мыши и выбрать пункт Добавить > Ссылка.

Будет открыт Диспетчер ссылок со списком доступных ссылок по группам.

Укажите ссылки, которые требуется добавить, а затем нажмите кнопку ОК.

В обозревателе решений щелкните правой кнопкой мыши узел Ссылки или Зависимости, после чего выберите Добавить ссылку на проект или Добавить общую ссылку на проект, или Добавить ссылку COM. (Можно щелкнуть правой кнопкой мыши узел проекта и выбрать пункт Добавить из всплывающего меню, чтобы выбрать эти параметры.)

Будет открыт Диспетчер ссылок со списком доступных ссылок по группам.

Укажите ссылки, которые требуется добавить, а затем нажмите кнопку ОК.

Вкладка "Сборки"

При добавлении вручную ссылки на любое из пространств имен EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a или EnvDTE100) установите в окне Свойства для свойства ссылки Внедрить типы взаимодействия значение False. Задание для этого свойства значения True может привести к проблемам сборки, так как некоторые свойства EnvDTE не допускают внедрения.

Все проекты классических приложений содержат неявную ссылку на библиотеку mscorlib. Проекты Visual Basic содержат неявную ссылку на Microsoft.VisualBasic. Все проекты содержат неявную ссылку на System.Core, даже если она была удалена из списка ссылок.

Если тип проекта не поддерживает сборки, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".

Вкладка Сборки состоит из двух подразделов.

В разделе Платформа перечислены все сборки, из которых состоит целевая платформа.

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
  • HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]

Некоторые компоненты в списке могут не отображаться в зависимости от версии платформы проекта. Это может произойти в следующих случаях.

Компонент, использующий новую версию платформы, не совместим с проектом, нацеленным на более раннюю версию платформы.

Сведения об изменении целевой версии платформы для проекта см. в статье Общие сведения о настройке для платформы.

Не следует добавлять ссылки на выходные файлы другого проекта того же решения, поскольку это может привести к ошибкам компиляции. Вместо этого следует создавать ссылки между проектами, используя вкладку Проекты диалогового окна Добавление ссылки. Это позволит упростить коллективную разработку за счет более эффективного управления библиотеками классов, создаваемыми в проектах. Дополнительные сведения см. в статье Устранение неполадок неработающих ссылок.

Чтобы отобразить сборку в диалоговом окне "Добавление ссылки"

Переместите или скопируйте сборку в одно из следующих расположений.

Каталог текущего проекта. (Можно найти эти сборки, используя вкладку Обзор .)

Другие каталоги проектов в одном решении. (Можно найти эти сборки, используя вкладку Проекты.)

Установите раздел реестра, определяющий положение отображаемых сборок.

Для 32-разрядной операционной системы добавьте один из следующих разделов реестра.

Для 64-разрядной операционной системы добавьте один из следующих разделов реестра в 32-разрядный куст реестра.

<AssemblyLocation> является каталогом сборок, которые требуется отображать в диалоговом окне Добавить ссылку, например C:\MyAssemblies.

Создание раздела реестра в узле HKEY_LOCAL_MACHINE позволяет всем пользователям видеть сборки в указанном расположении в диалоговом окне Добавить ссылку. Создание раздела реестра в узле HKEY_CURRENT_USER влияет только на настройки для текущего пользователя.

Вкладка "Проекты"

На вкладке Проекты указываются все совместимые проекты в текущем решении (в подразделе Решение).

Вкладка "Общие проекты"

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

Вкладка "Универсальная платформа Windows"

Вкладка Универсальная платформа Windows содержит список всех пакетов SDK, относящихся к платформам, на которых работают операционные системы Windows. Эта вкладка имеет две подгруппы: Ядро и Расширения.

Подгруппа "Ядро"

Проекты универсального приложения для Windows по умолчанию имеют ссылку на пакет SDK универсальной платформы Windows. Соответственно, в подгруппе Ядро в диспетчере ссылок не перечисляются никакие сборки из пакета SDK универсальной платформы Windows.

Подгруппа "Расширения"

В разделе Расширения перечислены пользовательские пакеты SDK, расширяющие целевую платформу Windows.

Пакет SDK — это коллекция файлов, которая обрабатывается Visual Studio как единый компонент. На вкладке Расширения пакеты SDK, относящиеся к проекту, из которого было открыто диалоговое окно "Диспетчер ссылок", указываются как отдельные записи. При добавлении в проект все содержимое SDK используется Visual Studio таким образом, что пользователю не нужно принимать никаких дополнительных мер для добавления содержимого SDK в IntelliSense, на панель элементов, в конструкторы, обозреватель объектов, средства сборки, развертывания, отладки и упаковки.

Сведения об отображении SDK на вкладке Расширения см. в статье Создание средств разработки программного обеспечения.

Если проект ссылается на пакет SDK, зависящий от другого пакета SDK, Visual Studio не будет использовать второй пакет SDK, пока вы вручную не зададите ссылку на него. Когда пользователь выбирает пакет SDK на вкладке Расширения, открывается диалоговое окно "Диспетчер ссылок", которое помогает определить зависимости SDK, перечислив их в области сведений.

Если тип проекта не поддерживает расширения, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".

Вкладка COM

Если тип проекта не поддерживает COM, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".

Обзор

Кнопка Обзор позволяет осуществлять поиск компонента в файловой системе.

Не следует добавлять ссылки на выходные файлы другого проекта того же решения, поскольку это может привести к ошибкам компиляции. Вместо этого следует создавать ссылки между проектами, используя вкладку Решение диалогового окна "Диспетчер ссылок". Это позволит упростить коллективную разработку за счет более эффективного управления библиотеками классов, создаваемыми в проектах. Дополнительные сведения см. в статье Устранение неполадок неработающих ссылок.

Невозможно добавить SDK в проект с помощью кнопки "Обзор". С помощью кнопки "Обзор" можно добавить в проект только файл (например, сборку или файл WinMD).

При указании ссылки на файл WinMD предполагается, что файлы <FileName>.winmd, <FileName>.dll и <FileName>.pri находятся рядом. При указании ссылки на файл WinMD в следующих сценариях неполный набор файлов копируется в выходной каталог проекта и, следовательно, происходят сбои сборки и выполнения.

Компонент на базе машинного кода. Проект на базе машинного кода создает по одному файлу WinMD для каждого не связанного с другими набора пространств имен и по одному файлу DLL с реализацией. Файлы WinMD будут иметь разнородные имена. При указании ссылки на такой файл компонента на базе машинного кода MSBuild не определит, что файлы WinMD с разнородными именами относятся к одному компоненту. Следовательно, будут скопированы только файлы <FileName>.dll и <FileName>.winmd с одинаковыми именами, и возникнет ошибка времени выполнения. Чтобы обойти эту проблему, нужно создать пакет SDK расширения. Дополнительные сведения см. в статье Создание средств разработки программного обеспечения.

Использование элементов управления. Элемент управления XAML состоит по крайней мере из следующих файлов: <FileName>.winmd, <FileName>.dll, <FileName>.pri, <XamlName>.xaml и <ImageName>.jpg. Когда проект будет собран, файлы ресурсов, связанные со ссылкой на файл, не будут скопированы в выходной каталог проекта, а будут скопированы только файлы <FileName>.winmd, <FileName>.dll и <FileName>.pri. При этом в журнал будет занесена ошибка сборки, указывающая пользователю на отсутствующие ресурсы <XamlName>.xaml и <ImageName>.jpg. Чтобы сборка прошла успешно, пользователь должен вручную скопировать эти файлы ресурсов в выходную папку проекта для сборки и отладки (выполнения). Для решения этой проблемы создайте пакет SDK расширения, следуя инструкциям в статье Создание средств разработки программного обеспечения, или измените файл проекта, добавив в него следующее свойство:

При добавлении этого свойства сборка может выполняться медленнее.

Последние

Элементы Сборки, COM, Windows и Обзор поддерживают вкладку Последние, содержащую список компонентов, которые были недавно добавлены в проекты.

Поиск

Панель поиска в диалоговом окне "Диспетчер ссылок" работает с текущей активной вкладкой. Например, если пользователь вводит в области поиска запрос "System", когда открыта вкладка Решение, поиск не вернет результаты, если решение не содержит проекта, в имени которого есть слово "System".

Я попытался начать новый проект и запустить восстановление, чтобы увидеть, случайно ли я что-то удалил в зависимостях, но при создании нового проекта я все еще получаю ту же ошибку. Я пытался исследовать вопрос и видел ответы, относящиеся к «исследователю решений», но, насколько я понимаю, в Visual Studio Code 1.8 такой функции, по-видимому, нет.

Может ли кто-нибудь указать мне правильное направление, как заставить их работать, возможно, добавив вручную в зависимости?

Примечание

Предпосылки

Шаги

  1. Запустить код Visual Studio
  2. Откройте папку своего проекта
  3. Запустите палитру команд кода VS, нажав F1 или Ctrl + Shift + P или Строка меню> Просмотр> Палитра команд

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

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

  1. Нажмите Nuget: установить /сослаться на пакет в project.info .

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

  1. Введите фильтр пакетов, например, system.data ​​em> ( введите здесь ссылку на сборку )

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

  1. Нажмите Enter
  2. Нажмите System.Data.SqlClient

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

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

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

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

  1. На панели Explorer нажмите project.json , чтобы открыть его
  1. На панели редактора отображается ссылка на сборку, добавленная в project.json файл
  1. ссылка на сборку, System.Data.SqlClient , используемая в Program.cs

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

Используйте команду dotnet add package , чтобы добавить ссылку на пакет в ваш проект. Например: dotnet add package Newtonsoft.Json , который добавляет ссылку на пакет в *.csproj файл проекта:

и теперь вы можете запустить команду dotnet restore , чтобы восстановить зависимости вашего проекта.

Приведенный выше ответ от ikolim не работает, как указано кем-то другим, команды Nuget: Install /Reference нет. Есть только Добавить пакет! Таким образом, ответ в приведенной ниже ссылке решил мою проблему. Редактирование файла Myproject.csproj вручную.

Установите для "Target Framework" всех проектов одинаковые. Затем построил это. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите свойства для Target Framework.


Недавно я допилил одну проблему, которая меня уже очень давно достает. Суть ее в том, что диалог Add Reference в Visual Studio не нужен, если вы берете сборку из одного из тех мест, где их ищет студия. Не нужен он потому, что студия вполне могла бы сама проиндексировать все пространства имен в этих сборках и при написании using Biztalk дать мне возможность добавить ссылку автоматически. Поскольку студия это делать не умеет, пришлось ей помочь.


Идея сама по себе простая, и состоит из 2 х частей, а именно:

  • Нужно найти все важные сборки и проиндексировать все их пространства имен.
  • При наведении курсора на using , нужно сделать поиск всех возможных сборок и показать меню.

Индексирование

База для пространств имен и путям к файлам сборок делается за секунды. Единственный трюк – это использование Cecil вместо извращений вроде Assembly.ReflectionOnlyLoad() , которые пытаются подгрузить зависимости и ещё невесть что. Быстренько находим все типы, записываем их простнанства имен в HashSet , и засовываем все это в базу. Как? Об этом сейчас и поговорим.

Во-первых, пути к файлам которые использует Add Reference находятся как минимум в 2 х местах – в реестре, и в папке PublicAssemblies. Чтобы найти те папки, которые указаны в реестре, я написал следующий код:

public static IEnumerable< string > GetAssemblyFolders()<br/>

string [] valueNames = new [] < string .Empty, "All Assemblies In" >;<br/>
string [] keyNames = new []<br/>

@"SOFTWARE\Microsoft\.NETFramework\AssemblyFolders" ,<br/>
@"SOFTWARE\Wow6432Node\Microsoft\.NETFramework\AssemblyFolders" <br/>
>;<br/>
var result = new HashSet< string >();<br/>
foreach ( var keyName in keyNames)<br/>

using ( var key = Registry.LocalMachine.OpenSubKey(keyName))<br/>

if (key != null )<br/>
foreach ( string subkeyName in key.GetSubKeyNames())<br/>

using ( var subkey = key.OpenSubKey(subkeyName))<br/>

if (subkey != null )<br/>

foreach ( string valueName in valueNames)<br/>

string value = (subkey.GetValue(valueName) as string ?? string .Empty).Trim();<br/>
if (! string .IsNullOrEmpty( value ))<br/>
result.Add( value );<br/>
><br/>
><br/>
><br/>
><br/>
><br/>
><br/>
return result;<br/>
><br/>

Изначально у меня мало что работало, т.к. ключи на 32-битной и 64-битной системе разные. В очередной раз замечаю что с переходом на 64-битную систему начал писать более качественный код :)

Чтобы найти папку PublicAssemblies, нужно сначала найти где установлена Visual Studio:

public static string GetVS9InstallDirectory()<br/>

var keyNames = new string []<br/>

@"SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VS" ,<br/>
@"SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" <br/>
>;<br/>
foreach ( var keyName in keyNames)<br/>

using ( var key = Registry.LocalMachine.OpenSubKey(keyName))<br/>

if (key != null )<br/>
return key.GetValue( "ProductDir" ).ToString();<br/>
><br/>
><br/>
return null ;<br/>
><br/>

Имея список папок, можно в каждой искать все DLL-файлы и индексировать их. Помимо тех папок что всегда фигурируют в диалоге Add Reference, можно добавлять свои папки, что бывает удобно.

using ( var dc = new StatsDataContext())<br/>

var dirs = new HashSet< string >();<br/>
dirs.Add( @"C:\Program Files (x86)\JetBrains\ReSharper\v4.5\Bin" );<br/>
foreach ( var dir in GetAssemblyFolders()) dirs.Add(dir);<br/>
dirs.Add(Path.Combine(GetVS9InstallDirectory(), @"Common7\IDE\PublicAssemblies" ));<br/>
foreach ( string dir in dirs.Where(Directory.Exists))<br/>

string [] files = Directory.GetFiles(dir, "*.dll" );<br/>
var entries = new HashSet<Namespace>();<br/>
foreach ( string file in files)<br/>

var ns = AddNamespacesFromFile(file);<br/>
foreach ( var n in ns)<br/>
entries.Add(n);<br/>
><br/>
dc.Namespaces.InsertAllOnSubmit(entries);<br/>
><br/>
dc.SubmitChanges();<br/>
><br/>

Добавление происходит с помощью метода AddNamespacesFromFile() который, как я уже писал, использует Mono.Cecil.

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

Использование

Не имея лучших вариантов, я реализовал добавление ссылок как context action для ReSharper. Идея простая – пользователь наводит курсор на слово Biztalk в строке using Biztalk; и видит магическое меню, при выборе элементов которого автоматически добавляется ссылка в проект.

Сам СА наследует от полезного класса CSharpContextActionBase , внутри которого кроме проверки а «применимость» ничего умного не происходит. Поиск по базе ведется с помощью простой выборки в стиле SELECT * from Namespaces where NamespaceName LIKE '%BizTalk%' . Для базы в которой у вас будет пара тысяч элементов (ну, может 10 тысяч, если постараетесь), такой подход адекватен.

protected override bool IsAvailableInternal()<br/>

items = EmptyArray<IBulbItem>.Instance;<br/>
var element = GetSelectedElement<IElement>( false );<br/>
if (element == null )<br/>
return false ;<br/>
var parent = element.ToTreeNode().Parent;<br/>
if (parent == null || parent.GetType().Name != "ReferenceName" || parent.Parent == null <br/>
|| string .IsNullOrEmpty(parent.Parent.GetText()))<br/>
return false ;<br/>
string s = parent.Parent.GetText();<br/>
if ( string .IsNullOrEmpty(s))<br/>
return false ;<br/>
var bulbItems = new HashSet<RefBulbItem>();<br/>
using ( var conn = new SqlConnection(<br/>
"Data Source=(local);Initial Catalog=Stats;Integrated Security=True" ))<br/>

conn.Open();<br/>
var cmd = new SqlCommand(<br/>
"select * from Namespaces where NamespaceName like '%" + s + "%'" , conn);<br/>
using ( var r = cmd.ExecuteReader())<br/>

int count = 0;<br/>
while (r.Read())<br/>

bulbItems.Add( new RefBulbItem(<br/>
provider,<br/>
r.GetString(2).Trim(),<br/>
r.GetString(3).Trim(),<br/>
r.GetString(4).Trim()));<br/>
count++;<br/>
><br/>
if (count > 0)<br/>

items = System.Linq.Enumerable.ToArray(<br/>
System.Linq.Enumerable.ThenBy(<br/>
System.Linq.Enumerable.OrderBy(<br/>
bulbItems,<br/>
i => i.AssemblyName),<br/>
i => i.AssemblyVersion));<br/>
return true ;<br/>
><br/>
><br/>
><br/>
return false ;<br/>
><br/>

Все интересное происходит в BulbItem ах, то есть желтых лампочках которые появляются в процессе вызова контекстного меню. Сама лампочка – это некий POCO который умеет в нужный момент добавить ссылку на определенную сборку.

protected override void ExecuteBeforeTransaction(ISolution solution,<br/>
JetBrains.TextControl.ITextControl textControl, IProgressIndicator progress)<br/>

var project = provider.Project;<br/>
if (project == null ) return ;<br/>
var fileSystemPath = FileSystemPath.TryParse(path);<br/>
if (fileSystemPath == null ) return ;<br/>
var assemblyFile = provider.Solution.AddAssembly(fileSystemPath);<br/>
if (assemblyFile == null ) return ;<br/>
var cookie = project.GetSolution().EnsureProjectWritable(project, out project, SimpleTaskExecutor.Instance);<br/>
QuickFixUtil.ExecuteUnderModification(textControl,<br/>
() => project.AddModuleReference(assemblyFile.Assembly),<br/>
cookie);<br/>
><br/>

Код выше удалось написать только с помощью члена команды JetBrains (planerist – спасибо!), т.к. у меня у самого не хватило усидчивости чтобы найти правильный способ.

Как я могу отобразить ссылки в верхней части объявления метода?
Я искал его в свойствах Visual Studio, но не смог его найти.

Также случай для Visual Studio 2019 Preview. Включите CodeLens вручную

В Visual Studio Professional или Enterprise Включите CodeLens, выполнив

Инструменты → Параметры → Текстовый редактор → Все языки → CodeLens

Это недоступно в версии для сообщества

@ FADI1987 какой экземпляр Visual Studio вы используете? CodeLens недоступны для Community Edition. @ FADI1987 эта функция (CodeLens) недоступна для Community Edition. Но я ничего не могу сказать о ReSharper (я не знаю). Они забрали это в 2017 году? У меня есть это в Сообществе 2015 года. да, это не круто - в VS2015 сообществе есть ссылка ссылка доступна, но не в VS2017 сообществе :( . и я подумал, что Community Edition должен был быть полный пакет

Не повезло с линзой кода в выпусках сообщества.

Нажмите Shift +, F12 чтобы найти все ссылки.

Вы также можете попробовать Ctrl + K + R вместо Shift + F12 У меня Visual Studio Community 2017 (v 15.9.9), и у него уже есть функция линз кода по пути, описанному @ISHIDA @Pimenta он есть, но при проверке ссылки по-прежнему не отображаются. Я на версии 15.9.10

Для отображения ссылок в верхней части метода необходимо включить параметр CodeLens в Visual Studio Professional и Visual Studio Enterprise .

Используйте следующие шаги, чтобы включить его.

1 . Перейдите в Инструменты и затем выберите Параметры :

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

2 . Затем выберите текстовый редактор -> Все языки -> CodeLens

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

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

3 . Установите флажок, чтобы включить кодовый объектив:

Читайте также: