Создание проектов библиотек для конкретной платформы для NuGet

Проекты многоплатформенных библиотек, предназначенные для конкретных платформ, таких как iOS и Android, лучше всего работают с общими проектами.

NuGet может содержать код iOS и Android, а также код .NET, общий для обоих.

Несколько сборок создаются и встроены в один пакет NuGet. Стандарты NuGet гарантируют, что пакет можно добавить во все поддерживаемые типы проектов, такие как проекты Xamarin.iOS и Android.

Действия по созданию кроссплатформенной библиотеки NuGet

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

  2. Выберите многоплатформную библиотеку из раздела библиотеки Multiplatform>:

    Configure multi-platform library for a single code base

  3. Введите имя и описание и выберите конкретный платформы:

    Configure platform-specific library for iOS and Android

  4. Завершите работу мастера. В решение добавляются следующие проекты:

    • Android Project — код, зависящий от Android, можно дополнительно добавить в этот проект.
    • Проект iOS — код, зависящий от iOS, можно добавить в этот проект.
    • Проект NuGet — код не добавляется в этот проект. Он ссылается на другие проекты и содержит конфигурацию метаданных для выходных данных пакета NuGet.
    • Общий проект — общий код следует добавить в этот проект, включая код, зависящий от платформы, внутри #if директив компилятора.
  5. Щелкните правой кнопкой мыши проект NuGet и выберите пункт "Параметры", а затем откройте раздел метаданных пакета > NuGet и введите необходимые метаданные (а также любые необязательные метаданные):

    Enter required metadata

  6. Также в окне "Параметры проекта" откройте раздел "Эталонные сборки " и выберите профили PCL, которые будут поддерживаться с помощью "приманки и переключения":

    Also in the Project Options window, open the Reference Assemblies section and choose which PCL profiles the shared library will support via bait and switch

    Примечание.

    "Приманка и коммутатор" означает, что сборки PCL будут содержать только API, предоставляемый библиотекой (он не может содержать код для конкретной платформы). При добавлении NuGet в проект Xamarin общие библиотеки будут компилироваться в PCL, но сборки, относящиеся к платформе, содержат код, который фактически используется проектом iOS или Android.

  7. Щелкните проект правой кнопкой мыши и выберите команду "Создать пакет NuGet" (или создать или развернуть решение), а файл пакета NuGet .nupkg будет сохранен в папке /bin/ (отладка или выпуск в зависимости от конфигурации).

    NuGet package file will be saved in the bin folder either Debug or Release, depending on configuration

Проверка выходных данных

Пакеты NuGet также являются ZIP-файлами, поэтому можно проверить внутреннюю структуру созданного пакета.

На снимках экрана показано содержимое NuGet для конкретной платформы, поддерживающей iOS и Android, и выбрано два эталонных сборки:

Files contained in the NuGet package