Поделиться через


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

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

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

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

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

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

  • COM- перечисляет все COM-компоненты, доступные для использования в ссылках.

  • проекты

  • совместных проектов

  • Windowsс Core и подгруппами расширений . Вы можете исследовать ссылки в Windows SDK или пакетах расширения SDK с помощью браузера объектов.

  • просмотрс подгруппой Последние

    Заметка

    Если вы разрабатываете проекты C++, возможно, в диалоговом окне Менеджера ссылок не отображается Обзор.

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

  1. В обозревателе решенийщелкните правой кнопкой мыши узел ссылки или зависимости, а затем выберите Добавить ссылку на проект, добавить ссылку на общий проектили добавить com-ссылку в контекстном меню. (Вы можете щелкнуть правой кнопкой мыши узел проекта и выбрать Добавить во всплывающем меню, чтобы выбрать из этих параметров.)

    снимок экрана диалогового окна

    Диспетчер ссылок открывается и перечисляет доступные ссылки по групповому признаку.

    снимок экрана диалогового окна диспетчера ссылок в Visual Studio.

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

    Заметка

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

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

Заметка

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

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

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

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

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

  1. Framework перечисляет все сборки, составляющие целевую платформу.

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

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

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

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

    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 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 перечислены все пакеты SDK, относящиеся к платформам, на которых работают операционные системы Windows. На этой вкладке есть две подгруппы: Core и расширения .

Основная подгруппа

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

Подгруппа расширений

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

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

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

Заметка

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

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

Вкладка COM

На вкладке COM перечислены все компоненты COM, доступные для использования в ссылках. Если вы хотите добавить ссылку на зарегистрированную библиотеку COM DLL, содержащую внутренний манифест, сначала отмените регистрацию библиотеки 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 с помощью элемента меню Remove Unused Reference.

снимок экрана диалогового окна

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