Nupkg как добавить в Visual Studio
Обновлено: 21.11.2024
Пользовательский интерфейс диспетчера пакетов NuGet в Visual Studio для Windows позволяет легко устанавливать, удалять и обновлять пакеты NuGet в проектах и решениях. Опыт работы с Visual Studio для Mac см. в разделе Включение пакета NuGet в проект. Пользовательский интерфейс диспетчера пакетов не входит в состав Visual Studio Code.
Найти и установить пакет
В обозревателе решений щелкните правой кнопкой мыши Ссылки или проект и выберите Управление пакетами NuGet. .
На вкладке "Обзор" отображаются пакеты по популярности из выбранного в данный момент источника (см. источники пакетов). Найдите определенный пакет, используя поле поиска в левом верхнем углу. Выберите пакет из списка, чтобы отобразить информацию о нем, что также активирует кнопку «Установить» и раскрывающийся список выбора версии.
Выберите нужную версию из раскрывающегося списка и выберите Установить. Visual Studio устанавливает пакет и его зависимости в проект. Вас могут попросить принять условия лицензии. После завершения установки добавленные пакеты появятся на вкладке Установлено. Пакеты также перечислены в узле «Ссылки» обозревателя решений, что указывает на то, что вы можете ссылаться на них в проекте с помощью операторов using.
Чтобы включить предварительные версии в поиск и сделать предварительные версии доступными в раскрывающемся списке версий, выберите параметр Включить предварительные версии.
Удалить пакет
В обозревателе решений щелкните правой кнопкой мыши Ссылки или нужный проект и выберите Управление пакетами NuGet. .
Выберите вкладку "Установлено".
Выберите пакет для удаления (при необходимости отфильтруйте список с помощью поиска) и выберите Удалить.
Обратите внимание, что элементы управления исходным кодом Include prerelease и Package не действуют при удалении пакетов.
Обновить пакет
В обозревателе решений щелкните правой кнопкой мыши Ссылки или нужный проект и выберите Управление пакетами NuGet. . (В проектах веб-сайтов щелкните правой кнопкой мыши папку Bin.)
Перейдите на вкладку «Обновления», чтобы просмотреть пакеты с доступными обновлениями из выбранных источников пакетов. Выберите Включить предварительную версию, чтобы включить предварительные версии пакетов в список обновлений.
Выберите пакет для обновления, выберите нужную версию в раскрывающемся списке справа и выберите Обновить.
Чтобы обновить несколько пакетов до их новейших версий, выберите их в списке и нажмите кнопку "Обновить" над списком.
Вы также можете обновить отдельный пакет на вкладке "Установлено". В этом случае сведения о пакете включают средство выбора версии (с учетом параметра «Включить предварительный выпуск») и кнопку «Обновить».
Управление пакетами решения
Управление пакетами решения — удобный способ одновременной работы с несколькими проектами.
Выберите Инструменты > Диспетчер пакетов NuGet > Управление пакетами NuGet для решения. команду меню или щелкните решение правой кнопкой мыши и выберите Управление пакетами NuGet. :
При управлении пакетами решения пользовательский интерфейс позволяет выбирать проекты, на которые влияют операции:
Вкладка "Консолидация"
Разработчики обычно считают плохой практикой использовать разные версии одного и того же пакета NuGet в разных проектах в одном решении. Когда вы выбираете управление пакетами для решения, пользовательский интерфейс диспетчера пакетов предоставляет вкладку «Консолидация», на которой вы можете легко увидеть, где пакеты с разными номерами версий используются разными проектами в решении:
В этом примере проект ClassLibrary1 использует EntityFramework 6.2.0, тогда как ConsoleApp1 использует EntityFramework 6.1.0. Чтобы объединить версии пакетов, выполните следующие действия:
- Выберите проекты для обновления в списке проектов.
- Выберите версию для использования во всех этих проектах в элементе управления версиями, например EntityFramework 6.2.0.
- Нажмите кнопку "Установить".
Диспетчер пакетов устанавливает выбранную версию пакета во все выбранные проекты, после чего пакет больше не отображается на вкладке "Консолидация".
Исходники пакетов
Чтобы изменить источник, из которого Visual Studio получает пакеты, выберите его в селекторе источника:
Для управления источниками пакетов:
Выберите значок «Настройки» в пользовательском интерфейсе диспетчера пакетов, описанном ниже, или используйте команду «Инструменты» > «Параметры» и прокрутите до пункта «Диспетчер пакетов NuGet»:
Выберите узел "Источники пакетов":
Чтобы добавить источник, выберите +, измените имя, введите URL-адрес или путь в элементе управления источником и выберите Обновить. Теперь источник отображается в раскрывающемся списке выбора.
Чтобы изменить источник пакета, выберите его, внесите изменения в поля Имя и Источник и выберите Обновить.
Чтобы отключить источник пакета, снимите флажок слева от имени в списке.
Чтобы удалить источник пакета, выберите его, а затем нажмите кнопку X.
Использование кнопок со стрелками вверх и вниз не меняет порядок приоритета источников пакетов. Visual Studio игнорирует порядок источников пакетов, используя пакет из того источника, который первым отвечает на запросы. Дополнительные сведения см. в разделе Восстановление пакетов.
Если источник пакета снова появляется после его удаления, он может быть указан в файлах NuGet.Config уровня компьютера или пользователя. Расположение этих файлов см. в разделе Общие конфигурации NuGet, а затем удалите источник, отредактировав файлы вручную или с помощью команды nuget sources.
Управление параметрами диспетчера пакетов
Когда пакет выбран, пользовательский интерфейс диспетчера пакетов отображает небольшой расширяемый элемент управления «Параметры» под селектором версии (здесь он показан как в свернутом, так и в развернутом виде). Обратите внимание, что для некоторых типов проектов доступен только параметр Показать окно предварительного просмотра.
В следующих разделах объясняются эти параметры.
Показать окно предварительного просмотра
При выборе в модальном окне отображаются зависимости выбранного пакета до его установки:
Параметры установки и обновления
(Доступно не для всех типов проектов.)
Поведение зависимостей определяет, как NuGet решает, какие версии зависимых пакетов установить:
- Игнорировать зависимости пропускает установку любых зависимостей, что обычно нарушает работу устанавливаемого пакета.
- Самая низкая [по умолчанию] устанавливает зависимость с минимальным номером версии, который соответствует требованиям основного выбранного пакета.
- Самое высокое исправление устанавливает версию с одинаковыми основным и вспомогательным номерами версии, но с самым высоким номером исправления. Например, если указана версия 1.2.2, будет установлена самая старшая версия, начинающаяся с 1.2.
- Самый высокий дополнительный номер устанавливает версию с таким же основным номером версии, но с самым высоким дополнительным номером и номером исправления. Если указана версия 1.2.2, будет установлена самая старшая версия, начинающаяся с 1
- Самая высокая устанавливает самую старшую доступную версию пакета.
Действие при конфликте файлов указывает, как NuGet должен обрабатывать пакеты, которые уже существуют в проекте или на локальном компьютере:
- Подсказка указывает NuGet запрашивать, следует ли сохранить или перезаписать существующие пакеты.
- Игнорировать все указывает NuGet пропускать перезапись любых существующих пакетов.
- Перезаписать все указывает NuGet перезаписать все существующие пакеты.
Параметры удаления
(Доступно не для всех типов проектов.)
Удалить зависимости: если этот флажок установлен, все зависимые пакеты удаляются, если на них нет ссылок в другом месте проекта.
Принудительно удалять, даже если от него есть зависимости: если этот флажок установлен, пакет удаляется, даже если на него все еще ссылаются в проекте. Обычно это используется в сочетании с Удалить зависимости для удаления пакета и любых установленных им зависимостей. Однако использование этой опции может привести к неработающим ссылкам в проекте. В таких случаях вам может потребоваться переустановить другие пакеты.
Если вы используете Visual Studio для Mac, ознакомьтесь с этой информацией о создании пакета NuGet или используйте инструменты командной строки dotnet.
Предпосылки
Если он еще не установлен, установите интерфейс командной строки dotnet.
Создать проект библиотеки классов
Щелкните правой кнопкой мыши полученный файл проекта и выберите "Создать", чтобы убедиться, что проект создан правильно. Библиотека DLL находится в папке Debug (или Release, если вместо этого вы создаете эту конфигурацию).
Конечно, в реальном пакете NuGet вы реализуете множество полезных функций, с помощью которых другие могут создавать приложения. Однако для этого пошагового руководства вы не будете писать дополнительный код, поскольку для создания пакета достаточно библиотеки классов из шаблона. Тем не менее, если вам нужен функциональный код для пакета, используйте следующее:
Настроить свойства пакета
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду меню "Свойства", затем перейдите на вкладку "Пакет".
Для пакетов, предназначенных для общего пользования, обратите особое внимание на свойство Теги, так как теги помогают другим найти ваш пакет и понять, что он делает.
Присвойте своему пакету уникальный идентификатор и заполните любые другие необходимые свойства. Сопоставление свойств MSBuild (проект в стиле SDK) со свойствами в файле .nuspec см. в разделе целевые объекты пакета. Описание свойств см. в справочнике по файлу .nuspec. Все свойства здесь входят в манифест .nuspec, который Visual Studio создает для проекта.
Вы должны присвоить пакету идентификатор, уникальный для nuget.org или любого используемого вами хоста. Для этого пошагового руководства мы рекомендуем включать в название «Образец» или «Тест», так как более поздний этап публикации делает пакет общедоступным (хотя маловероятно, что кто-то на самом деле будет его использовать).
Если вы попытаетесь опубликовать пакет с уже существующим именем, вы увидите ошибку.
(Необязательно) Чтобы просмотреть свойства непосредственно в файле проекта, щелкните правой кнопкой мыши проект в обозревателе решений и выберите «Редактировать AppLogger.csproj».
Этот параметр доступен только начиная с Visual Studio 2017 для проектов, использующих атрибут в стиле SDK. В противном случае щелкните проект правой кнопкой мыши и выберите «Выгрузить проект». Затем щелкните правой кнопкой мыши выгруженный проект и выберите «Редактировать AppLogger.csproj».
Выполнить команду пакета
Установите для конфигурации значение Release.
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите команду "Упаковать":
(Необязательно) Создать пакет при сборке
Вы можете настроить Visual Studio для автоматического создания пакета NuGet при сборке проекта.
В обозревателе решений щелкните проект правой кнопкой мыши и выберите "Свойства".
На вкладке "Пакет" выберите "Создать пакет NuGet при сборке".
Когда вы автоматически создаете пакет, время на упаковку увеличивает время сборки вашего проекта.
(Необязательно) пакет с MSBuild
В качестве альтернативы использованию команды меню «Упаковать» NuGet 4.x+ и MSBuild 15.1+ поддерживает цель пакета, если проект содержит необходимые данные пакета. Откройте командную строку, перейдите в папку проекта и выполните следующую команду. (Обычно вы хотите запустить «Командную строку разработчика для Visual Studio» из меню «Пуск», так как она будет настроена со всеми необходимыми путями для MSBuild.)
Опубликовать пакет
Получите ключ API
Дополнительную информацию о создании учетной записи см. в разделе Отдельные учетные записи.
Выберите свое имя пользователя (в правом верхнем углу), затем выберите Ключи API.
Выберите «Создать», укажите имя для своего ключа, выберите «Выбрать области действия» > «Отправить». Введите * для шаблона Glob, затем выберите «Создать». (Подробнее об областях действия см. ниже.)
После создания ключа выберите Копировать, чтобы получить нужный ключ доступа в интерфейсе командной строки:
Всегда держите ключ API в секрете! Относитесь к своему ключу API как к паролю, который позволяет любому управлять пакетами от вашего имени. Вам следует удалить или заново сгенерировать ключ API, если он был случайно обнаружен.
Сохраните свой ключ в безопасном месте, потому что вы не сможете скопировать ключ позже. Если вы вернетесь на страницу ключа API, вам потребуется повторно сгенерировать ключ, чтобы скопировать его. Вы также можете удалить ключ API, если больше не хотите отправлять пакеты.
Область действия позволяет создавать отдельные ключи API для разных целей. Каждый ключ имеет свой срок действия и может быть привязан к конкретным пакетам (или шаблонам глобусов). Каждый ключ также предназначен для определенных операций: отправка новых пакетов и обновлений, только отправка обновлений или исключение из списка. С помощью области действия вы можете создавать ключи API для разных людей, которые управляют пакетами для вашей организации, чтобы у них были только те разрешения, которые им нужны. Дополнительные сведения см. в разделе Ключи API с ограниченной областью действия.
Публикация с помощью интерфейса командной строки dotnet или nuget.exe
Этот шаг является рекомендуемой альтернативой использованию nuget.exe .
Прежде чем вы сможете опубликовать пакет, вы должны сначала открыть командную строку.
Перейдите в папку, содержащую файл .nupkg.
Выполните следующую команду, указав имя вашего пакета (уникальный идентификатор пакета) и заменив значение ключа на ваш ключ API:
dotnet отображает результаты процесса публикации:
Этот шаг является альтернативой использованию dotnet.exe .
Откройте командную строку и перейдите в папку, содержащую файл .nupkg.
Выполните следующую команду, указав имя вашего пакета (уникальный идентификатор пакета) и заменив значение ключа на ваш ключ API:
nuget.exe отображает результаты процесса публикации:
Ошибки публикации
Ошибки команды push обычно указывают на проблему. Например, вы могли забыть обновить номер версии в своем проекте и поэтому пытаетесь опубликовать уже существующий пакет.
Вы также видите ошибки при попытке опубликовать пакет с использованием идентификатора, который уже существует на хосте. Например, имя «AppLogger» уже существует. В таком случае команда push выдает следующую ошибку:
Если вы используете действительный ключ API, который вы только что создали, то это сообщение указывает на конфликт имен, который не совсем ясен из "разрешения" части ошибки. Измените идентификатор пакета, перестройте проект, заново создайте файл .nupkg и повторите команду push.
Управление опубликованным пакетом
Если в этом пошаговом руководстве вы создали бесполезный пакет (например, пакет, созданный с пустой библиотекой классов), вам следует удалить этот пакет, чтобы скрыть его из результатов поиска:< /p>
Найдите пакет, который хотите удалить из списка, в разделе "Опубликовано" и выберите значок корзины справа:
На следующей странице снимите флажок Список (имя пакета) в результатах поиска и выберите Сохранить:
Добавление файла readme и других файлов
Чтобы напрямую указать файлы для включения в пакет, отредактируйте файл проекта и используйте свойство содержимого:
В этой статье описывается, как включить пакет NuGet в проект, и демонстрируется цепочка инструментов, упрощающая этот процесс.
Введение в использование NuGet в Visual Studio для Mac см. в разделе Краткое руководство: установка и использование пакета в Visual Studio для Mac
Найти и установить пакет
Открыв проект в Visual Studio для Mac, щелкните правой кнопкой мыши папку "Зависимости" (папку "Пакеты" при использовании проекта Xamarin) в окне решения и выберите "Управление пакетами NuGet". .
Используйте окно поиска в правом верхнем углу, чтобы найти конкретный пакет, например EntityFramework . Когда вы найдете пакет, который хотите использовать, выберите его и нажмите кнопку «Добавить пакет», чтобы начать установку.
После загрузки пакета он будет добавлен в ваш проект. Решение будет меняться в зависимости от типа редактируемого проекта:
Проекты Xamarin
- Узел «Ссылки» будет содержать список всех сборок, являющихся частью пакета NuGet.
- В узле «Пакеты» отображаются все загруженные вами пакеты NuGet. Вы можете обновить или удалить пакет из этого списка.
- В узле Зависимости > NuGet отображаются все загруженные вами пакеты NuGet. Вы можете обновить или удалить пакет из этого списка.
Использование пакетов NuGet
После добавления пакета NuGet и обновления ссылок на проект вы можете программировать с использованием API, как и с любой ссылкой на проект.
Убедитесь, что вы добавили все необходимые директивы using в начало файла:
Обновление пакетов
Обновления пакетов можно выполнять либо сразу, щелкнув правой кнопкой мыши узел "Зависимости" (узел "Пакеты" для проектов Xamarin), либо отдельно для каждого пакета. Когда доступна новая версия пакета NuGet, появляется значок обновления .
Щелкните правой кнопкой мыши Зависимости, чтобы открыть контекстное меню, и выберите Обновить, чтобы обновить все пакеты:
- Управление пакетами NuGet: открывает окно для добавления дополнительных пакетов в проект.
- Обновление – проверяет исходный сервер на наличие каждого пакета и загружает все более новые версии.
- Восстановить: загружаются все отсутствующие пакеты (без обновления существующих пакетов до более новых версий).
Параметры обновления и восстановления также доступны на уровне решения и влияют на все проекты в решении.
Обновление до предварительных версий пакетов
Чтобы выполнить обновление до более новой предварительной версии пакета, щелкните правой кнопкой мыши Зависимости, чтобы открыть контекстное меню, и выберите Управление пакетами NuGet. меню.
Установите флажок Показать предварительные версии пакетов в нижней части диалогового окна.
Наконец, на вкладке «Обновления» диалогового окна выберите пакет, который вы хотите обновить, и выберите новую предварительную версию в раскрывающемся списке «Новая версия» и нажмите «Обновить пакет».
Обнаружение устаревших пакетов
В окне "Решение" вы можете посмотреть, какая версия пакета установлена в данный момент, и щелкнуть пакет правой кнопкой мыши, чтобы обновить его.
Вы также увидите уведомление рядом с названием пакета, когда будет доступна новая версия пакета, чтобы вы могли решить, хотите ли вы обновить ее.
В показанном меню у вас есть две опции:
- Обновить — проверяет исходный сервер и загружает более новую версию (если она существует).
- Удалить — удаляет пакет из этого проекта и удаляет соответствующие сборки из ссылок проекта.
Управление пакетами решения
Управление пакетами решения — удобный способ одновременной работы с несколькими проектами.
Щелкните решение правой кнопкой мыши и выберите Управление пакетами NuGet. :
При управлении пакетами решения пользовательский интерфейс позволяет выбирать проекты, на которые влияют операции:
Вкладка "Консолидация"
При работе с решением с несколькими проектами рекомендуется убедиться, что везде, где вы используете один и тот же пакет NuGet в каждом проекте, вы также используете один и тот же номер версии этого пакета. Visual Studio для Mac помогает упростить эту задачу, предоставляя вкладку «Консолидация» в пользовательском интерфейсе диспетчера пакетов, когда вы выбираете управление пакетами для решения. С помощью этой вкладки вы можете легко увидеть, где пакеты с разными номерами версий используются разными проектами в решении:
В этом примере проект NuGetDemo использует Microsoft.EntityFrameworkCore 2.20, тогда как NuGetDemo.Shared использует Microsoft.EntityFrameworkCore 2.2.6. Чтобы объединить версии пакетов, выполните следующие действия:
- Выберите проекты для обновления в списке проектов.
- Выберите версию для использования во всех этих проектах в списке «Новая версия», например Microsoft.EntityFrameworkCore 3.0.0.
- Нажмите кнопку "Объединить пакет".
Диспетчер пакетов устанавливает выбранную версию пакета во все выбранные проекты, после чего пакет больше не отображается на вкладке "Консолидация".
Добавление источников пакетов
В Visual Studio для Mac выберите Visual Studio > Настройки > NuGet > Источники, чтобы просмотреть и изменить список источников пакетов. Обратите внимание, что источниками могут быть удаленный сервер (указанный URL-адресом) или локальный каталог.
Нажмите «Добавить», чтобы настроить новый источник. Введите понятное имя и URL-адрес (или путь к файлу) источника пакета. Если источником является безопасный веб-сервер, введите также имя пользователя и пароль, в противном случае оставьте эти поля пустыми:
Затем при поиске пакетов можно выбирать разные источники:
Контроль версий
В документации NuGet обсуждается использование NuGet без фиксации пакетов в системе управления версиями. Если вы предпочитаете не хранить двоичные файлы и неиспользуемую информацию в системе управления версиями, вы можете настроить Visual Studio для Mac на автоматическое восстановление пакетов с сервера. Это означает, что когда разработчик впервые извлекает проект из системы управления версиями, Visual Studio для Mac автоматически загружает и устанавливает необходимые пакеты.
Подробнее о том, как исключить отслеживание каталога пакетов, см. в документации по системе управления версиями.
10 ответов 10
Меню Инструменты → Параметры → Диспетчер пакетов
Укажите имя и расположение папки. Нажмите «ОК». Поместите файлы пакета NuGet в эту папку.
Перейдите к своему проекту в обозревателе решений, щелкните правой кнопкой мыши и выберите "Управление пакетами NuGet". Выберите новый источник пакета.
На самом деле я проделал шаг 1 несколько раз. Но мой пакет не отображается на шаге 2, когда я открываю для просмотра установленных пакетов, обновлений или последних пакетов.
На моем экране у меня есть только «Все» в разделе «Установленные пакеты», а не «Официальный источник пакета NuGet», а не мой пользовательский «newNuget», они отсутствуют.
Я использую vs2010. Попытка загрузить и установить последнюю версию nuget со своей домашней страницы прямо сейчас. Скачать нажмите далее далее. тогда ошибка. M$, как и ожидалось, есть ссылка на известные проблемы, проверил это, говорит о несоответствии подписи, тогда мне нужно удалить существующий nuget, и это легко исправить. хорошо, сделай это.Когда я перезагружаю компьютер и снова устанавливаю, возвращается та же ошибка, несоответствие подписи. так что теперь я застрял со старой версией, новая версия не хочет устанавливаться.
Проблема устранена. Я удалил nuget из окон -> панель управления. Это не сработало. Мне нужно было запустить VS и перейти в Tools->Extension Manager. затем нажмите удалить nuget оттуда. Перезапустил ВС. Затем снова пошел устанавливать nuget, все заработало. Теперь также отображаются локальные файлы nupkg (изменить: они находятся на вкладке «Онлайн», а не на вкладке «Установлено», моя ошибка на картинке, которую я публикую). Спасибо за помощь :)
У меня пока недостаточно репутации, чтобы комментировать, но чтобы ответить Майклу в принятом ответе на комментарии о том, что VS2015 все еще хочет выйти в сеть. У меня была такая же проблема, но в настройках, если вы уберете все онлайн-источники, это работает для офлайн-источников. Nuget Options pic
Вы также можете использовать консоль диспетчера пакетов и вызвать командлет Install-Package, указав путь к каталогу, содержащему файл пакета, в параметре -Source:
Да. Параметр -Source также доступен в nuget.exe. Например: nuget install SomePackage -Source C:\PathToThePackageDir
Возможно, вам также потребуется указать флаг -IncludePrerelease. В противном случае, если версия пакета имеет суффикс дефиса (например, "-beta1"), Install-Package не найдет его.
Для файлов .nupkg, которые мне нравятся:
@RenniePet, который работал у меня в VS2017 (но я уже поместил свой .nupkg в тот же каталог, в котором хранились все остальные пакеты)
У меня это не работает, я использую VS2013 версии 12.0.21..5 и диспетчер пакетов Nuget 2.12.0.817 :(
Для Visual Studio 2017 и ее нового формата .csproj
Вы больше не можете просто использовать Install-Package, чтобы указать на локальный файл. (Вероятно, это связано с тем, что элемент PackageReference не поддерживает пути к файлам, он позволяет указать только идентификатор пакета.)
Сначала необходимо сообщить Visual Studio о расположении пакета, а затем добавить его в проект. Большинство пользователей заходят в диспетчер пакетов NuGet и добавляют локальную папку в качестве источника (меню Инструменты → Параметры → Диспетчер пакетов NuGet → Источники пакетов). Но это означает, что расположение вашей зависимости не зафиксировано (для контроля версий) с остальной частью вашей кодовой базы.
Локальные пакеты NuGet, использующие относительный путь
Это добавит источник пакета, применимый только к конкретному решению, и вы сможете использовать относительные пути.
Вам необходимо создать файл nuget.config в том же каталоге, что и ваш файл .sln. Настройте файл с нужными источниками пакетов. Когда вы в следующий раз откроете решение в Visual Studio 2017, все файлы .nupkg из этих исходных папок будут доступны. (Вы увидите источники, перечисленные в диспетчере пакетов, и вы найдете пакеты на вкладке «Обзор», когда вы управляете пакетами для проекта.)
Вот пример nuget.config для начала:
Предыстория
Моим вариантом использования этой функции является наличие нескольких экземпляров одного репозитория кода на моем компьютере. В кодовой базе есть общая библиотека, которая опубликована/развернута в виде файла .nupkg. Этот подход позволяет различным зависимым решениям в нашей кодовой базе использовать пакет в одном и том же экземпляре репозитория. Кроме того, кто-то со свежей установкой Visual Studio 2017 может просто извлечь код в любом месте, и зависимые решения будут успешно восстановлены и собраны.
Читайте также: