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


Управление ссылками в проекте

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

Добавление ссылки зависит от типа проекта для кода, над которым вы работаете:

Вы можете добавить ссылку на следующие типы компонентов и служб:

  • Библиотеки или сборки классов .NET

  • UWP-приложения

  • COM-компоненты

  • Другие сборки или библиотеки классов проектов в том же решении

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

  • Веб-службы XML

Ссылки на приложения UWP

Универсальная платформа Windows (UWP) предоставляет общую платформу приложений для каждого устройства под управлением Windows. Сведения о создании приложения UWP см. в руководстве по созданию первого приложения универсальной платформы Windows в Visual Studio с помощью XAML и C#.

Ссылки на проекты

Проекты универсальной платформы Windows (UWP) могут создавать ссылки на другие проекты UWP в решении или проекты Windows 8.1 или двоичные файлы, при условии, что эти проекты не используют API, которые не рекомендуется использовать в Windows 10 и более поздних версиях. Дополнительные сведения см. в разделе "Переход из среды выполнения Windows 8 в UWP".

Если вы решили перенести проекты Windows 8.1 на Windows 10 и более поздние версии, см. статью Перенос, миграция и обновление проектов Visual Studio.

Подсказка

Сведения о создании и создании нового приложения UWP для Windows 10 и Windows 11 см. в разделе "Выбор версии UWP".

Ссылки на расширения SDK

Приложения универсальной платформы Windows (UWP) visual Basic, C#, C++ и JavaScript могут ссылаться на пакеты SDK расширений, предназначенные для Windows 8.1, если эти пакеты SDK расширений не используют API, которые не рекомендуется использовать в Windows 10 и более поздних версиях. Проверьте сайт поставщика пакета SDK для расширений, чтобы узнать, можно ли ссылаться на него приложениями UWP.

Если вы определяете, что пакет SDK расширения, на который ссылается приложение, не поддерживается, необходимо выполнить следующие действия.

  1. Просмотрите имя проекта, вызывающего ошибку. Платформа, предназначенная для проекта, отмечена в скобках рядом с именем проекта. Например, MyProjectName (Windows 8.1) означает, что проект MyProjectName предназначен для платформы версии Windows 8.1.

  2. Перейдите на сайт поставщика, которому принадлежит неподдерживаемый пакет SDK расширений, и установите версию пакета SDK расширения с зависимостями, совместимыми с версией платформы, на которую предназначен проект.

    Замечание

    Один из способов узнать, имеет ли SDK расширения зависимости от других SDK расширений, - это посмотреть в диспетчере ссылок. Перезапустите Visual Studio, создайте проект приложения UWP на C#, а затем щелкните проект правой кнопкой мыши и выберите "Добавить ссылку". Перейдите на вкладку Windows , а затем вложенную вкладку "Расширения" и выберите пакет SDK расширения. Просмотрите правую область в диспетчере ссылок. Если у него есть зависимости, они будут перечислены в этом месте.

    Это важно

    Если проект предназначен специально для Windows 10, а пакет SDK расширений, установленный на предыдущем шаге, зависит от пакета среды выполнения Microsoft Visual C++, версия пакета среды выполнения Microsoft Visual C++, совместимая с Windows 10 версии 14.0, и устанавливается с Visual Studio.

  3. Если пакет SDK расширений, установленный на предыдущем шаге, зависит от других пакетов SDK расширений, перейдите на сайты поставщиков, принадлежащих зависимостям, а затем установите версии этих зависимостей, совместимые с версией платформы, целевой для проекта.

  4. Перезапустите Visual Studio и откройте приложение.

  5. Щелкните правой кнопкой мыши узел "Ссылки " или " Зависимости" в проекте, вызвавшего ошибку, и нажмите кнопку "Добавить ссылку".

  6. Выберите вкладку 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, если сборка или компонент находится в глобальном кэше сборок или является компонентом платформы. В противном случае значение устанавливается в True. Ссылки между проектами всегда устанавливаются в значение True.

Ссылка на проект или сборку, которые предназначены для другой версии .NET

Вы можете создавать приложения, ссылающиеся на проекты или сборки, предназначенные для другой версии .NET. Например, можно создать приложение, предназначенное для .NET Framework 4.6, которое ссылается на сборку, предназначенную для .NET Framework 4.5. Если вы создаете проект, предназначенный для более ранней версии .NET, вы не можете задать ссылку в этом проекте или сборке, предназначенной для более новой версии.

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

Ссылки от проекта к проекту

Ссылки от проекта к проекту — это ссылки на проекты, содержащие сборки; вы добавляете ссылки на проекты с помощью вкладки "Проекты" диалогового окна "Диспетчер ссылок". Visual Studio может найти сборку при указании пути к проекту.

При наличии проекта, создающего сборку, следует ссылаться на проект и не использовать ссылку на файл. Преимущество ссылки на проект в проекте заключается в том, что она создает зависимость между проектами в системе сборки. Зависимый проект создается, если он изменился с момента последнего создания проекта ссылки. Ссылка на файл не создает зависимость сборки, поэтому можно построить проект, ссылающийся на другой проект, не создавая зависимость от него, и ссылка может устареть. (То есть проект может ссылаться на ранее созданную версию проекта.) Это может привести к тому, что в каталоге bin требуется несколько версий одной библиотеки DLL, что невозможно. При возникновении этого конфликта появится сообщение, например, "Предупреждение: зависимость 'файл' в проекте 'project' не может быть скопирована в каталог выполнения, потому что это приведет к перезаписи ссылки 'файл'." Дополнительные сведения см. в разделах Устранение неполадок с неисправными ссылками и Практическое руководство. Создание и удаление зависимостей проекта.

Замечание

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

Общие ссылки на проект

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

Ссылки на файлы

Ссылки на файлы — это прямые ссылки на сборки вне контекста проекта Visual Studio. Вы создаете их с помощью вкладки "Обзор " диалогового окна "Диспетчер ссылок". Используйте ссылку на файл, если у вас просто есть сборка или компонент, а не проект, который создает его в качестве выходных данных.