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

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

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

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

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

  • Сборки с подгруппами платформы и расширений

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

  • Проектов

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

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

  • Обзор с подгруппой "Последние "

    Примечание

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

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

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

    Снимок экрана: диалоговое окно

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

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

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

    Примечание

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

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

На вкладке Сборки перечислены все сборки .NET, которые доступны для ссылки. Вкладка Сборки не содержит никаких сборки из глобального кэша сборок (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. Соответственно, на вкладке Платформа не будут указаны никакие сборки из платформы, а вместо них будет отображаться следующее сообщение: "Ссылки на все сборки .NET Framework уже заданы. С помощью обозревателя объектов рассмотрите ссылки в .NET 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 4, несовместим с проектом, нацеленным на .NET Framework 4.5.

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

Примечание

В Visual Studio 2015 или более поздней версии ссылка на файл создается вместо ссылки на проект, если целевой версией платформы для одного проекта является .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> имеет версию 3.0, папки, указанные в AssemblyFoldersEx, применяются к проектам, предназначенным для платформа .NET Framework 3.0 и более поздних версий.

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

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

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

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

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

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

Примечание

Проект, ориентированный на .NET Framework 4, несовместим с проектом, ориентированным на клиентский профиль .NET Framework 4.

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

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

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

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

Обзор

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

Проект может ссылаться на компонент, ориентированный на другую версию платформы. Например, вы можете создать приложение, предназначенное для .NET Framework 4.7 и ссылающееся на компонент, который предназначен для .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 с помощью пункта меню "Удалить неиспользуемую ссылку ".

Снимок экрана: диалоговое окно

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

См. также