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

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

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

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

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

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

  • Проекты

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

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

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

    Примечание

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

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

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

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

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

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

На вкладке Сборки перечислены все сборки .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.

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

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

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

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

    - или -

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

    Для 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 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".

См. также