Вручную созданию пакетов NuGet для XamarinManually Creating NuGet Packages for Xamarin

Эта страница содержит некоторые советы помогут вам создавать пакеты NuGet, нацеленных на платформу Xamarin.This page contains some tips to help build NuGet packages that target the Xamarin platform.

Примечание

Xamarin Studio 6.2 (и Visual Studio для Mac) включает в себя возможность автоматически создание пакетов NuGet из библиотеки PCL .NET Standard и проектах общих.Xamarin Studio 6.2 (and Visual Studio for Mac) includes the ability to automatically generate NuGet packages from PCL, .NET Standard, or Shared Projects. Ссылаться на многоплатформенные библиотеки для совместного использования кода руководство для получения дополнительных сведений.Refer to the Multiplatform Libraries for Code Sharing guide for more details.

Профили Xamarin пакета NuGetNuGet Package Xamarin Profiles

Веб-сайте NuGet поддержка нескольких версий платформы .NET и профили описывает, как для поддержки различных платформ Microsoft и профили, но не содержит имен целевой платформы, используемые Xamarin.The NuGet website's Supporting Multiple .NET Framework Versions and Profiles discusses how to support different Microsoft frameworks and profiles but does not include the target framework names used by Xamarin.

Сегодня являются основной целевые платформы Xamarin, используется:The main Xamarin target frameworks in use today are:

  • MonoAndroid -Xamarin.AndroidMonoAndroid - Xamarin.Android
  • Xamarin.iOS -Xamarin.iOS единый API (поддерживает 64-разрядных)Xamarin.iOS - Xamarin.iOS Unified API (supports 64-bit)
  • Xamarin.Mac -мобильных профиля в Xamarin.Mac, что эквивалентно области Xamarin.iOS и Xamarin.Android API.Xamarin.Mac - Xamarin.Mac's mobile profile, which is equivalent to the Xamarin.iOS and Xamarin.Android API surface.

Имеется также целевой объект для более старых iOS классический API:There is also a target for the older iOS Classic API:

  • MonoTouch -iOS классический APIMonoTouch - iOS Classic API

Объект файлу nuspec файл, который все это в качестве целевого будет выглядеть следующим образом:A .nuspec file that targeted all these would look something like:

<files>
    <file src="Mac\bin\Release\*.dll" target="lib\Xamarin.Mac20" />
    <file src="iOS\bin\Release\*.dll" target="lib\Xamarin.iOS10" />
    <file src="Android\bin\Release\*.dll" target="lib\MonoAndroid10" />
    <file src="iOSClassic\bin\Release\*.dll" target="lib\MonoTouch10" />
</files>

Выше игнорирует все переносимые библиотеки классов.The above ignores any portable class libraries.

Большинство файлу nuspec файлах указывается номер версии целевой платформы, но это необязательно, если сборка работает со всеми версиями этой целевой платформы.Most .nuspec files specify the version number of the target framework but it is optional if your assembly works with all versions of that target framework. Таким образом, если на целевом сервере была lib\MonoAndroid это будет означать, она работает с любой версией Xamarin.Android.So if your target was lib\MonoAndroid this would mean it works with any version of Xamarin.Android.

Можно указать версию с набором номера без десятичной запятой, или это можно сделать с помощью десятичных запятых.You can specify the version with a set of numbers without a decimal point or you can specify it using decimal points. Без десятичной запятой NuGet просто принимает каждое число и включить его в версию, вставив "." между каждая цифра.Without the decimal point NuGet will just take each number and turn it into a version by inserting a '.' between each digit.

В приведенном выше «MonoAndroid10» означает «Android 1.0".In the above "MonoAndroid10" means "Android 1.0". Это означает лишь то проекта требуемой версии .NET framework должен быть MonoAndroid 1.0 или более поздней версии.This just means the project's target framework needs to be MonoAndroid version 1.0 or higher. Версия, указанная в <TargetFrameworkVersion> элемент в файле проекта.The version is specified in the <TargetFrameworkVersion> element in the project file.

Для уточнения:To clarify:

  • MonoAndroid403 соответствует Android 4.0.3 и более поздних версий (т. е API уровня 15)MonoAndroid403 matches Android 4.0.3 and newer (ie API level 15)
  • Xamarin.iOS10 соответствует Xamarin.iOS 1.0 и новееXamarin.iOS10 matches Xamarin.iOS 1.0 and newer
  • Xamarin.iOS1.0 также соответствует Xamarin.iOS 1.0 и новееXamarin.iOS1.0 also matches Xamarin.iOS 1.0 and newer

Пакеты NuGet переносимой библиотеки Классов с зависимости платформыPCL NuGets with Platform Dependencies

Профили PCL ограничены в какую платформу .NET API-интерфейсов, они могут получить доступ, и они определенно не может получить доступ к кода для конкретных платформ.PCL Profiles are limited in what .NET framework APIs they can access, and they certainly can't access platform-specific code. Эти ссылки 3rd-party обсуждаются различные подходы к созданию пакетов NuGet, использующие PCL и собственные API-интерфейсы для обеспечения совместимости для Xamarin и других платформ:These 3rd-party links discuss different approaches for creating NuGet packages that use PCL and native APIs to provide compatibility for Xamarin and other platforms:

Этот внешний список профилей PCL с их именами целевой NuGet также является полезным справочником.This external list of PCL Profiles with their NuGet target name is also a useful reference.

ПримерыExamples

Некоторые примеры открытым исходным кодом, который можно использовать для:Some open-source examples that you can refer to:

  • ModernHttpClient — создавать приложения с помощью System.Net.Http, но удалить эту библиотеку в и осуществляется значительно быстрее (представление источника).ModernHttpClient – Write your app using System.Net.Http, but drop this library in and it will go drastically faster (view source).
  • Сплаттинга — библиотеку, чтобы упростить платформ, должно быть (представление источника).Splat – A library to make things cross-platform that should be (view source).
  • NGraphics -межплатформенной библиотеки для отрисовки векторной графики на платформе .NET (представление источника).NGraphics - A cross platform library for rendering vector graphics on .NET (view source).