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


Параметры компоновщика Xamarin.Mac

Компоновка является мощным средством оптимизации, которое уменьшает размер приложения за счет удаления неиспользуемого кода.

Обзор

В зависимости от того, для какую целевую версию .NET Framework использует ваш проект, могут быть доступны не все режимы работы компоновщика. Это связано с тем, что для компоновки нужно создать графа объектов каждого типа, используемого приложением, а для Full (Полная) или Unsupported (Не поддерживаемая) это невозможно из-за ограничений System.Configuration.

Возможны четыре варианта:

  • Нет — полное отключение компоновки. Этот вариант используется по умолчанию для конфигурации отладки в Modern (Современная) и для всех конфигураций в Full (Полная).
  • SDK — компоновка применяется для всех сборок пакетов SDK, за исключением пользовательских сборок. Этот вариант используется по умолчанию в конфигурации выпуска в Modern (Современная). Недоступно в Full (Полная).
  • Все — компоновка применяется для всех сборок. Чтобы использовать этот вариант, пользовательский код должен быть защищен от компоновщика, как описано в этих заметках. Недоступно в Full (Полная).
  • Платформа — компоновка применяется только для Xamarin.Mac.dll. Подробные сведения см. ниже.

Компоновка платформы

Компоновка приложений для целевой версии .NET Framework Full (Полная) обычно небезопасна, но может применяться в некоторых сценариях ограниченной компоновки.

Например, переданное в macOS App Store приложение не должно ссылаться на некоторые устаревшие интерфейсы API (такие как QTKit), для некоторых из которых есть привязки в Xamarin.Mac. Даже если приложение не вызывает эти привязки, они будут присутствовать в пакете SDK, что приведет к его отклонению.

Компоновка платформы предполагает, что приложения и BCL не защищены от компоновки, и удаляет неиспользуемый код только из файла Xamarin.Mac.dll.

Все приложения, не использующие типы из Xamarin.Mac.dll, будут запускаться немного быстрее после удаления ненужных типов.

Компоновка платформы обычно нужна только для тех приложений, которые используют целевую платформу Full (Полная), поскольку приложения для платформы Modern (Современная) могут применять более мощный вариант SDK.

Настройка конфигурации компоновщика

Чтобы изменить конфигурацию компоновщика для проекта Xamarin.Mac, выполните следующее.

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

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

  3. На вкладке Сборка Mac для параметра Поведение компоновщика выберите вариант, который соответствует потребностям приложения.

    Choose which linker behavior to use

  4. Компоновка платформы для целевой платформы Full (Полная) не появится в интегрированной среде разработки до следующего обновления. До этого добавьте --linkplatform в дополнительные аргументы mmp.

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