Целевая платформа для Xamarin.Mac

В этой статье рассматриваются целевые платформы (библиотеки базовых классов), доступные для Xamarin.Mac, и последствия их использования в проекте Xamarin.Mac.

Target framework options for Xamarin.Mac

Общие сведения

Каждая программа или библиотека .NET зависит от функциональных возможностей, предоставляемых базовой библиотекой классов (BCL). Этот BCL включает сборки, такие как mscorlib, System.Net.Http и System.Xml, которые предоставляют общие функциональные возможности, встроенные во все языки .NET.

На протяжении многих лет существовали несколько различных версий этого BCL, оптимизированных для различных вариантов использования. BCL "desktop" включает более широкий набор библиотек, которые могут быть слишком тяжелыми для других вариантов использования, в то время как мобильные устройства ориентированы на обеспечение безопасности API для связывания, что позволяет удалить неиспользуемый код для уменьшения количества приложений.

Одним из более важных последствий этих разных целевых платформ является то, что все сборки в данной программе должны нацелены на совместимые сборки BCL. Если это не так, можно было бы связать две сборки с разными версиями System.dll не согласны с подписью заданного типа. Общая библиотека может использовать .NET Standard 2, которая является общим подмножеством целевых платформ или конкретной целевой платформы.

Существует три варианта целевой платформы, доступные для Xamarin.Mac, каждый из которых имеет различные преимущества и компромиссы:

  • Современная (называемая Mobile в старой документации) — очень похожее подмножество, которое позволяет использовать Xamarin.iOS с высокой настройкой для производительности и размера. Эта целевая платформа является компоновщиком безопасной, поэтому эти проекты могут иметь их окончательное пространство, резко уменьшая, удаляя неиспользуемый код.

  • Full (называется XM 4.5 в старой документации) — очень похожее подмножество для BCL "desktop" с несколькими небольшими удалениями. Так как целевая платформа почти идентична net45 (и более поздним версиям), она может легко использовать множество nuget, которые не предоставляют сборки netstandard2 или определенные сборки Xamarin.Mac. Однако из-за использования System.Configuration он несовместим с связыванием.

  • Неподдерживаемый (называемый системой в старой документации) — вместо связывания с BCL, предоставляемой Xamarin.Mac, используйте текущую установленную систему mono. Это обеспечивает полный набор сборок, включая некоторые известные проблемы (Например, System.Drawing). Этот вариант существует только имеет "последний курорт", и настоятельно рекомендуется исчерпать другие варианты перед его использованием. Как подразумевает имя, использование не поддерживается официальными каналами поддержки.

Настройка целевой платформы

Чтобы изменить тип Target Framework для проекта Xamarin.Mac, сделайте следующее:

  1. Откройте проект Xamarin.iOS в Visual Studio для Mac.

  2. В обозревателе решений дважды щелкните файл проекта, чтобы открыть диалоговое окно Параметры проекта.

  3. На вкладке "Общие " выберите тип Target Framework , соответствующий потребностям приложения:

    Using the Project Options window to choose a target framework

  4. Чтобы сохранить внесенные изменения, нажмите кнопку OK.

После переключения типа Target Framework необходимо очистить и перестроить проект Xamarin.Mac.

Итоги

В этой статье кратко рассматриваются различные типы целевых платформ (библиотеки базовых классов), доступные приложению Xamarin.Mac, и при использовании каждого типа платформы.