Добавление и удаление ссылок с помощью диспетчера ссылок

Диалоговое окно "Диспетчер ссылок" позволяет добавлять ссылки на компоненты, которые разработали вы, корпорация Майкрософт или другая организация, а также управлять этими ссылками. При разработке универсального приложения Windows ваш проект автоматически ссылается на все правильные библиотеки DLL пакета SDK Windows. При создании проекта .NET проект автоматически ссылается на необходимые компоненты, например пакет SDK для .NET, но необходимо добавить ссылки при добавлении функциональных возможностей. Некоторые API .NET представлены в компонентах, которые необходимо добавить вручную. Ссылки на компоненты COM или пользовательские компоненты необходимо добавить вручную.

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

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

  • Сборки с подгруппами Платформы и расширения (только платформа .NET Framework)

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

  • Проекты

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

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

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

    Примечание.

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

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

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

    Screenshot of the Add Reference dialog from the context menu in Solution Explorer.

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

    Screenshot of the Reference Manager dialog box in Visual Studio.

  2. Выберите ссылку для добавления и нажмите кнопку "ОК".

    Примечание.

    Если вы не видите нужную ссылку, нажмите кнопку "Обзор ", чтобы найти ссылку. (Если вы разрабатываете проекты C++, возможно, вы не увидите вариант обзора.)

Вкладка "Сборки" (только платформа .NET Framework)

Примечание.

Вкладка "Сборки" недоступна для проектов, предназначенных для .NET Core или .NET 5 и более поздних версий, так как сборки для этих проектов добавляются как в виде пакетов NuGet, так и включаются путем назначения определенной версии .NET. Чтобы просмотреть ссылки на сборки в проекте, разверните узел зависимостей в проекте и просмотрите платформы. На узле зависимостей можно щелкнуть правой кнопкой мыши, чтобы добавить или удалить ссылки на проекты, или открыть браузер пакетов NuGet для управления пакетами NuGet. См. статью "Установка пакетов и управление ими в Visual Studio" с помощью диспетчер пакетов NuGet в документации по NuGet.

Для платформа .NET Framework проектов на вкладке "Сборки" перечислены все сборки .NET, доступные для ссылки. Вкладка Сборки не содержит никаких сборки из глобального кэша сборок (GAC), так как сборки в глобальном кэше сборок являются частью среды выполнения. Если вы развертываете или копируете приложение, содержащее ссылку на сборку, зарегистрированную в GAC, сборка не развертывается или копируется с приложением независимо от локального параметра копирования . Дополнительные сведения см. в статье Управление ссылками в проекте.

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

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

Вкладка "Сборки" состоит из двух подзадачи:

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

    Для проектов, которые не ориентированы на .NET Core или универсальную платформу Windows, на вкладке Платформа перечислены сборки из целевой версии платформы. Пользователь должен добавить все ссылки, которые нужны приложению.

    Проекты универсальной платформы Windows по умолчанию содержат ссылки на все сборки в требуемой версии .NET Framework. В управляемых проектах доступный только для чтения узел в папке Ссылки в Обозревателе решений содержит ссылку на всю платформу .NET Framework. Соответственно, вкладка Framework не перечисляет сборки из платформы и вместо этого отображает следующее сообщение: "Все сборки Framework уже ссылаются. С помощью обозревателя объектов исследуйте ссылки в Framework".

  2. В разделе Расширения перечислены все сборки, разработанные внешними поставщиками компонентов и элементов управления для расширения целевой версии .NET Framework. В зависимости от назначения пользовательского приложения эти сборки могут понадобиться ему.

    Список расширений состоит из сборок, зарегистрированных в следующих местах:

    32-разрядный компьютер:

    • 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]

    64-разрядный компьютер:

    • 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]

    И более старые версии [идентификатор требуемой версии .NET Framework]

    Например, если проект предназначен для платформа .NET Framework 4 на 32-разрядном компьютере, расширения перечисляют сборки, зарегистрированные в папке \Microsoft.NETFramework\v4.0\AssemblyFoldersEx, \Microsoft.NETFramework\v3.5\AssemblyFoldersEx, \Microsoft.NETFramework\v3.0\AssemblyFoldersEx и \Microsoft.NETFramework\v2.0\AssemblyFoldersEx.

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

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

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

  • Компонент, использующий старую версию платформа .NET Framework, несовместим с проектом, предназначенным для более новой платформа .NET Framework.

Дополнительные сведения о совместимости версий между версиями платформа .NET Framework см. в разделе "Совместимость версий".

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

Примечание.

Ссылка на файл вместо ссылки на проект создается, если целевая версия одного проекта платформа .NET Framework 4.5 или более поздней, а целевая версия другого проекта — платформа .NET Framework 2, 3, 3,5 или 4.0. Дополнительные сведения о .NET, платформа .NET Framework и .NET Core см. в статье "Что такое .NET ( и .NET Core)".

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

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

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

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

    - или -

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

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

    • [HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

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

    • [HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\<VersionMinimum>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"

    <VersionMinimum> — это минимальная допустимая версия платформы. Если <VersionMinimum> — v3.0, папки, указанные в AssemblyFoldersEx, относятся к проектам, предназначенным для платформы .NET Framework 3.0 и более поздних версий.

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

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

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

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

На вкладке "Проекты" перечислены все совместимые проекты в текущем решении в подзадаче решения .

Проект может ссылаться на другой проект, ориентированный на другую версию платформы. Например, можно создать проект, предназначенный для .NET 8.0, но ссылающийся на сборку, созданную для .NET 6.0. Однако проект .NET 6.0 не может ссылаться на проект платформа .NET Framework 8.0. Дополнительные сведения см. в статье Общие сведения о настройке для платформы.

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

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

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

Вкладка Универсальная платформа Windows содержит список всех пакетов SDK, относящихся к платформам, на которых работают операционные системы Windows. На этой вкладке есть две подгруппы: Core и Extensions.

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

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

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

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

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

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

Примечание.

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

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

Вкладка COM

Вкладка COM содержит список всех COM-компонентов, ссылки на которые можно добавить. Если необходимо добавить ссылку на зарегистрированную DLL-библиотеку COM, содержащую внутренний манифест, сначала необходимо отменить регистрацию DLL-библиотеки. В противном случае среда разработки Visual Studio добавить ссылку как элемент управления ActiveX, а не как библиотеку DLL с машинным кодом.

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

Просмотреть

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

Проект может ссылаться на компонент, ориентированный на другую версию платформы. Например, можно создать приложение, которое предназначено для платформа .NET Framework 4.7.2, но ссылается на компонент, предназначенный для платформа .NET Framework 4. Дополнительные сведения см. в статье Общие сведения о настройке для платформы.

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

Невозможно добавить 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 расширения, следуя инструкциям в статье Создание средств разработки программного обеспечения, или измените файл проекта, добавив в него следующее свойство:

    <PropertyGroup>
       <GenerateLibraryOutput>True</GenerateLibraryOutput>
    </PropertyGroup>
    

    Примечание.

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

Последние

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

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

Удаление ссылки

Вы можете удалить неиспользуемые ссылки на проекты стилей SDK в Visual Studio с помощью элемента меню "Удалить неиспользуемую ссылку ".

Screenshot of the Remove Unused Reference dialog from the context menu in Solution Explorer.

Дополнительные сведения см. в разделе "Удаление неиспользуемых ссылок".