Что указано в разделе ссылок ссылки на проект в Visual Studio или другом IDE
Обновлено: 21.11.2024
Вы можете использовать команду "Найти все ссылки", чтобы найти ссылки на определенные элементы кода в вашей кодовой базе. Команда «Найти все ссылки» доступна в контекстном меню (щелкните правой кнопкой мыши) элемента, ссылки на который вы хотите найти. Или, если вы пользуетесь клавиатурой, нажмите Shift + F12.
Результаты отображаются в окне инструментов с именем ссылки, где элемент – это имя элемента, который вы ищете. Панель инструментов в окне ссылок позволяет:
- Измените область поиска в раскрывающемся списке. Вы можете выбрать поиск только в измененных документах вплоть до всего решения.
- Скопируйте выбранный элемент ссылки, нажав кнопку «Копировать».
- Выбирайте кнопки, чтобы перейти к следующему или предыдущему месту в списке, или нажмите для этого клавиши F8 и Shift + F8.
- Удалите все фильтры для возвращаемых результатов, нажав кнопку "Очистить все фильтры".
- Измените способ группировки возвращаемых элементов, выбрав параметр в раскрывающемся списке Группировать по:.
- Сохранить текущее окно результатов поиска, нажав кнопку "Сохранить результаты". При нажатии этой кнопки текущие результаты поиска остаются в этом окне, а новые результаты поиска отображаются в новом окне инструментов.
- Выполните поиск строк в результатах поиска, введя текст в текстовое поле "Найти все ссылки".
Вы также можете навести указатель мыши на любой результат поиска, чтобы увидеть предварительный просмотр ссылки.
Перейти к ссылкам
Вы можете использовать следующие методы для перехода к ссылкам в окне ссылок:
- Нажмите F8, чтобы перейти к следующей ссылке, или Shift + F8, чтобы перейти к предыдущей ссылке.
- Нажмите клавишу Enter на ссылке или дважды щелкните ее, чтобы перейти к ней в коде.
- В контекстном меню ссылки выберите команду "Перейти к предыдущему расположению" или "Перейти к следующему расположению".
- Нажмите клавиши со стрелками вверх и вниз (если они включены в диалоговом окне "Параметры"). Чтобы включить эту функцию, в строке меню выберите "Инструменты" > "Параметры" > "Среда" > "Вкладки и окна" > "Вкладка предварительного просмотра", а затем выберите "Разрешить открытие новых файлов на вкладке предварительного просмотра" и "Просмотреть выбранные файлы в полях результатов поиска".
Изменить группы ссылок
По умолчанию ссылки группируются по проекту, а затем по определению. Однако вы можете изменить этот порядок группировки, изменив настройку в раскрывающемся списке «Группировать по:» на панели инструментов. Например, вы можете изменить его с настройки по умолчанию «Проект», затем «Определение» на «Определение», а затем «Проект», а также на другие настройки.
Определение и проект — это две группы, которые используются по умолчанию, но вы можете добавить другие, выбрав команду «Группировка» в контекстном меню или щелчке правой кнопкой мыши по выбранному элементу. Добавление дополнительных групп может быть полезным, если в вашем решении много файлов и путей.
Прежде чем писать код для внешнего компонента или подключенной службы, ваш проект должен сначала содержать ссылку на него. Ссылка — это, по сути, запись в файле проекта, содержащая информацию, необходимую Visual Studio для поиска компонента или службы.
Чтобы добавить ссылку, щелкните правой кнопкой мыши узел "Ссылки" или "Зависимости" в обозревателе решений и выберите "Добавить ссылку". Вы также можете щелкнуть правой кнопкой мыши узел проекта и выбрать «Добавить» > «Ссылка». Дополнительные сведения см. в разделе Как добавить или удалить ссылки.
Вы можете добавить ссылку на следующие типы компонентов и служб:
Другие сборки или библиотеки классов проектов в том же решении
Веб-службы XML
Ссылки на приложения UWP
Отсылки к проектам
Проекты универсальной платформы Windows (UWP) могут создавать ссылки на другие проекты UWP в решении или на проекты или двоичные файлы Windows 8.1 при условии, что эти проекты не используют API-интерфейсы, которые устарели в Windows 10 и более поздних версиях. Дополнительные сведения см. в разделе Переход с Windows Runtime 8 на UWP.
Если вы решите переориентировать проекты Windows 8.1 на Windows 10 и более поздние версии, см. раздел Портирование, перенос и обновление проектов Visual Studio.
Ссылки на расширения SDK
Если вы обнаружите, что Extension SDK, на который ссылается ваше приложение, не поддерживается, вам необходимо выполнить следующие действия:
Посмотрите на название проекта, который вызывает ошибку. Платформа, на которую нацелен ваш проект, указана в скобках рядом с названием проекта. Например, MyProjectName (Windows 8.1) означает, что ваш проект MyProjectName предназначен для версии платформы Windows 8.1.
Перейдите на сайт поставщика, которому принадлежит неподдерживаемый SDK Extension, и установите версию SDK Extension с зависимостями, совместимыми с версией платформы, на которую нацелен ваш проект.
Если ваш проект ориентирован конкретно на Windows 10, а Extension SDK, установленный на предыдущем шаге, зависит от пакета среды выполнения Microsoft Visual C++, версия пакета среды выполнения Microsoft Visual C++, совместимая с Windows 10, — v14.0. и устанавливается вместе с Visual Studio.
Если Extension SDK, который вы установили на предыдущем шаге, имеет зависимости от других Extension SDK, перейдите на сайты поставщиков, которым принадлежат зависимости, и установите версии этих зависимостей, совместимые с версией платформы вашего проекта. настроен таргетинг.
Перезапустите Visual Studio и откройте приложение.
Щелкните правой кнопкой мыши узел "Ссылки" или "Зависимости" в проекте, который вызвал ошибку, и выберите "Добавить ссылку".
Перейдите на вкладку Windows, а затем на вложенную вкладку Расширения, затем снимите флажки для старых SDK расширений и установите флажки для новых SDK расширений. Нажмите "ОК".
Добавить ссылку во время разработки
Когда вы делаете ссылку на сборку в своем проекте, Visual Studio ищет сборку в следующих местах:
Текущий каталог проекта. (Эти сборки можно найти на вкладке "Обзор").
Другие каталоги проектов в том же решении. (Вы можете найти эти сборки на вкладке «Проекты».)
- Все проекты содержат подразумеваемую ссылку на mscorlib.
- Все проекты содержат неявную ссылку на System.Core, даже если System.Core удален из списка ссылок.
- Проекты Visual Basic содержат подразумеваемую ссылку на Microsoft.VisualBasic.
Ссылки на общие компоненты во время выполнения
Во время выполнения компоненты должны находиться либо в пути вывода проекта, либо в глобальном кэше сборок (GAC). Если проект содержит ссылку на объект, который не находится ни в одном из этих местоположений, вы должны скопировать ссылку в выходной путь проекта при построении проекта. Свойство CopyLocal указывает, нужно ли делать эту копию. Если значение равно True, ссылка копируется в каталог проекта при построении проекта. Если значение равно False, ссылка не копируется.
Если вы развертываете приложение, содержащее ссылку на пользовательский компонент, зарегистрированный в GAC, этот компонент не будет развернут вместе с приложением независимо от параметра CopyLocal. В более ранних версиях Visual Studio можно было установить свойство CopyLocal для ссылки, чтобы обеспечить развертывание сборки. Теперь вы должны вручную добавить сборку в папку \Bin. Это позволяет тщательно проверять весь пользовательский код, снижая риск публикации пользовательского кода, с которым вы не знакомы.
По умолчанию для свойства CopyLocal установлено значение False, если сборка или компонент находятся в глобальном кэше сборок или являются компонентом платформы. В противном случае устанавливается значение True. Ссылки между проектами всегда имеют значение True.
Ссылки между проектами
Ссылки между проектами — это ссылки на проекты, содержащие сборки; вы добавляете ссылки на проекты, используя вкладку «Проекты» диалогового окна «Диспетчер ссылок». Visual Studio может найти сборку, если указан путь к проекту.
Если у вас есть проект, в котором создается сборка, вы должны ссылаться на проект, а не на файл (см. ниже). Преимущество межпроектной ссылки заключается в том, что она создает зависимость между проектами в системе сборки. Зависимый проект будет построен, если он изменился с момента последней сборки ссылающегося проекта. Ссылка на файл не создает зависимость сборки, поэтому можно построить ссылающийся проект без сборки зависимого проекта, и ссылка может устареть. (То есть проект может ссылаться на ранее созданную версию проекта.) Это может привести к тому, что в каталоге bin потребуется несколько версий одной библиотеки DLL, что невозможно. Когда возникает этот конфликт, вы увидите сообщение, такое как «Предупреждение: файл зависимости в проекте «Проект» не может быть скопирован в каталог запуска, поскольку это приведет к перезаписи ссылки на файл». Дополнительные сведения см. в разделах Устранение неполадок с неработающими ссылками и Практическое руководство. Создание и удаление зависимостей проекта.
Общие ссылки на проекты
В отличие от большинства других типов проектов, общий проект не имеет двоичного вывода. Вместо этого код компилируется в каждый проект, который на него ссылается. Общие проекты позволяют писать общий код, на который ссылается несколько различных проектов приложений.Код компилируется как часть каждого ссылающегося проекта и может включать директивы компилятора, помогающие включить специфичные для платформы функции в общую базу кода. Добавьте ссылку на общий проект на вкладке «Общие проекты» диалогового окна «Диспетчер ссылок».
Ссылки на файлы
Ссылки на файлы — это прямые ссылки на сборки вне контекста проекта Visual Studio. Вы создаете их с помощью вкладки «Обзор» диалогового окна «Диспетчер ссылок». Используйте ссылку на файл, если у вас есть только сборка или компонент, а не проект, создающий его в качестве вывода.
Если ваше приложение попытается использовать неработающую ссылку, возникнет исключительная ошибка. Невозможность найти компонент, на который указывает ссылка, является основным триггером ошибки, но есть несколько ситуаций, в которых ссылка может считаться поврежденной. Эти экземпляры показаны в следующем списке:
Ссылочный путь проекта неверен или неполный.
Файл, на который делается ссылка, был удален.
Файл, на который делается ссылка, был переименован.
Не удалось подключиться к сети или выполнить аутентификацию.
Ссылка на COM-компонент, который не установлен на компьютере.
Ниже приведены способы решения этих проблем.
На файлы в сборках указываются абсолютные пути в файле проекта. Таким образом, у пользователей, работающих в среде с несколькими разработчиками, может отсутствовать ссылочная сборка в их локальной среде. Чтобы избежать этих ошибок, в таких случаях лучше добавлять межпроектные ссылки. Дополнительные сведения см. в разделе Программирование с помощью сборок.
Неправильный путь ссылки
Если проекты совместно используются на разных компьютерах, некоторые ссылки могут быть не найдены, если компонент находится в разных каталогах на каждом компьютере. Ссылки хранятся под именем файла компонента (например, MyComponent). Когда в проект добавляется ссылка, расположение папки файла компонента (например, C:\MyComponents) добавляется к свойству проекта ReferencePath.
Когда проект открывается, он пытается найти эти файлы компонентов, на которые есть ссылки, просматривая каталоги по пути ссылки. Если проект открыт на компьютере, на котором компонент хранится в другом каталоге, например D:\MyComponents, ссылка не может быть найдена и в списке задач появляется ошибка.
Чтобы решить эту проблему, вы можете удалить неработающую ссылку, а затем заменить ее с помощью диалогового окна "Добавить ссылку". Другим решением является использование элемента Reference Path на страницах свойств проекта и изменение папок в списке, чтобы они указывали на правильные расположения. Свойство Reference Path сохраняется для каждого пользователя на каждом компьютере. Таким образом, изменение вашего эталонного пути не повлияет на других пользователей проекта.
Ссылки между проектами не имеют этих проблем. По этой причине используйте их вместо ссылок на файлы, если можете.
Чтобы исправить неработающую ссылку на проект, исправив путь ссылки
В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите "Свойства".
Появится конструктор проектов.
Если вы используете Visual Basic, выберите страницу «Ссылки» и нажмите кнопку «Пути ссылок». В диалоговом окне «Ссылочные пути» введите путь к папке, содержащей элемент, на который вы хотите сослаться, в поле «Папка», а затем нажмите кнопку «Добавить папку».
Файл, на который указывает ссылка, был удален
Возможно, файл, на который делается ссылка, был удален и больше не существует на диске.
Чтобы исправить неработающую ссылку на проект для файла, которого больше нет на вашем диске
Удалить ссылку.
Если ссылка существует в другом месте на вашем компьютере, прочтите ее оттуда.
Файл, на который указывает ссылка, был переименован
Возможно, файл, на который делается ссылка, был переименован.
Чтобы исправить неработающую ссылку на файл, который был переименован
Удалите ссылку, а затем добавьте ссылку на переименованный файл.
Если ссылка существует в другом месте на вашем компьютере, вы должны считать ее из этого места.
Сетевое подключение или аутентификация не удалась
Причин недоступных файлов может быть множество: например, сбой сетевого подключения или сбой аутентификации. Каждая причина может иметь уникальные средства устранения; например, вам может потребоваться обратиться к локальному администратору для доступа к необходимым ресурсам. Однако удаление ссылки и исправление кода, который ее использовал, всегда возможен.
Компонент COM не установлен на компьютере
Используйте эту страницу свойств, чтобы сообщить Visual Studio, какие каталоги использовать при построении выбранного в данный момент проекта. Чтобы задать каталоги для нескольких проектов в решении, используйте настраиваемый лист свойств, как описано в разделе Совместное использование или повторное использование параметров проекта Visual Studio C++.
Версию этой страницы для Linux см. в разделе Каталоги VC++ (Linux C++).
Для доступа к странице свойств каталогов VC++:
Если окно Solution Explorer не отображается, выберите View > Solution Explorer в главном меню.
Щелкните правой кнопкой мыши узел проекта (не решение верхнего уровня) и выберите "Свойства", чтобы открыть диалоговое окно "Страницы свойств".
Выберите страницу свойств Configuration > VC++ Directorys.
Свойства каталогов VC++ применяются к проекту, а не к узлу решения верхнего уровня. Если вы не видите каталоги VC++ в свойствах конфигурации, выберите узел проекта C++ в окне обозревателя решений:
Страница свойств каталогов VC++ для кроссплатформенных проектов выглядит иначе. Сведения о проектах Linux C++ см. в разделе Каталоги VC++ (Linux C++).
Если вы не знакомы с свойствами проекта в Visual Studio, вам может быть полезно сначала прочитать Компилятор Set C++ и свойства сборки в Visual Studio.
Настройки по умолчанию для свойств каталогов VC++ зависят от типа проекта. Для настольных проектов они включают расположение инструментов C++ для определенного набора инструментов платформы и расположение Windows SDK. Вы можете изменить набор инструментов платформы и версию Windows SDK на странице «Свойства конфигурации» > «Общие».
Чтобы просмотреть значения для любого из каталогов:
- Выберите одно из свойств на странице каталогов VC++. Например, выберите «Каталоги библиотек».
- Нажмите кнопку со стрелкой вниз в конце поля значения свойства.
- В раскрывающемся меню выберите "Изменить".
Теперь вы видите диалоговое окно, подобное этому:
Используйте это диалоговое окно для просмотра текущих каталогов. Однако, если вы хотите изменить или добавить каталог, лучше использовать Диспетчер свойств, чтобы создать лист свойств или изменить лист свойств пользователя по умолчанию. Дополнительные сведения см. в статье Совместное использование или повторное использование параметров проекта Visual Studio C++.
Как показано выше, многие унаследованные пути задаются в виде макросов. Чтобы просмотреть текущее значение макроса, нажмите кнопку «Макросы» в правом нижнем углу диалогового окна. Многие макросы зависят от типа конфигурации. Макрос в отладочной сборке может оцениваться по другому пути, чем тот же макрос в выпускной сборке.
Вы можете искать частичные или полные совпадения в поле редактирования. На следующем рисунке показаны все макросы, содержащие строку «WindowsSDK». Он также показывает текущий путь, который оценивает каждый макрос:
Этот список заполняется по мере ввода. Не нажимайте Enter.
Дополнительную информацию о макросах и о том, почему их следует использовать вместо жестко закодированных путей, когда это возможно, см. в разделе Настройка компилятора C++ и свойств сборки в Visual Studio.
Вы можете определить свои собственные макросы двумя способами:
Задайте переменные среды в командной строке разработчика. Все переменные среды рассматриваются как свойства/макросы MSBuild.
Определите пользовательские макросы в файле .props. Дополнительные сведения см. в разделе Макросы страницы свойств.
Общие
Вы также можете указать другие каталоги следующим образом.
Исполняемые каталоги
Каталоги, в которых следует искать исполняемые файлы. Соответствует переменной среды PATH.
Включаемые каталоги
Каталоги, в которых следует искать включаемые файлы, на которые есть ссылки в исходном коде. Соответствует переменной среды INCLUDE.
Внешние включаемые каталоги
Пути для включаемых файлов, которые следует рассматривать как внешние или системные файлы во время компиляции. Эти файлы пропускаются при проверке актуальности сборки. Эти пути также используются свойствами внешних включений. Дополнительные сведения о том, как установить эти параметры в среде IDE, см. в описании параметра /external компилятора.
Каталоги библиотек
Каталоги для поиска файлов библиотек ( .lib ). Этот поиск включает библиотеки времени выполнения. Соответствует переменной среды LIB. Этот параметр не применяется к файлам .obj; чтобы создать ссылку на файл .obj, на странице Свойства конфигурации > Компоновщик > Общие свойства выберите Дополнительные зависимости библиотеки, а затем укажите относительный путь к файлу.Дополнительные сведения см. на страницах свойств компоновщика.
Каталоги библиотеки WinRT
Каталоги для поиска файлов библиотеки WinRT для использования в приложениях универсальной платформы Windows (UWP).
Исходные каталоги
Каталоги, в которых нужно искать исходные файлы для использования в IntelliSense.
Исключить каталоги
Перед каждой компиляцией Visual Studio запрашивает метку времени для всех файлов, чтобы определить, были ли какие-либо изменены с момента предыдущей компиляции. Если в вашем проекте есть большие стабильные библиотеки, вы потенциально можете ускорить время сборки, исключив эти каталоги из проверки меток времени.
Общедоступный контент проекта
Общедоступные каталоги включения
Один или несколько каталогов для автоматического добавления в путь включения в проектах, которые ссылаются на этот проект.
Все файлы заголовков являются общедоступными
Указывает, следует ли автоматически добавлять общедоступные каталоги или все файлы заголовков проекта в путь включения в проектах, которые ссылаются на этот проект.
Общедоступные каталоги модулей C++
Один или несколько каталогов, содержащих модули C++ или исходные коды блоков заголовков, которые автоматически становятся доступными для проектов, ссылающихся на этот проект.
Все модули являются общедоступными
Указывает, следует ли сделать все модули проекта и блоки заголовков автоматически доступными для проектов, которые ссылаются на этот проект.
Общий доступ к настройкам
Вы можете предоставить общий доступ к свойствам проекта другим пользователям или нескольким компьютерам. Дополнительные сведения см. в разделе Настройка компилятора C++ и свойств сборки в Visual Studio.
Читайте также: