Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Если набора параметров по умолчанию недостаточно, вы можете выполнить связывание с помощью XML-файла, который описывает требования к компоновщику.
Вы можете предоставить компоновщику дополнительные определения, чтобы он не исключал из приложения определенные типы, методы и (или) поля. В собственном коде лучше всего применить пользовательский атрибут [Preserve], который описан в руководствах Компоновка в iOS и Компоновка в Android.
Но если вам нужны несколько определений из сборки пакета SDK или продукта, то лучшим решением будет создать XML-файл (вместо того, чтобы добавлять отдельный код только для того, чтобы компоновщик не удалял нужные элементы).
Этот XML-файл нужно определить с элементом верхнего уровня <linker>, который будет содержать узлы assembly (сборка), в которых будут расположены узлы type (тип), содержащие в свою очередь узлы method (метод) и field (поле).
Создав такой файл с описанием для компоновщика, добавьте его в проект и выполните следующее:
- Для Android: для параметра Действие сборки укажите LinkDescription;
- Для iOS: для параметра Действие сборки укажите LinkDescription.
В следующем примере показано, как выглядит такой XML-файл.
<linker>
<assembly fullname="mscorlib">
<type fullname="System.Environment">
<field name="mono_corlib_version" />
<method name="get_StackTrace" />
</type>
</assembly>
<assembly fullname="My.Own.Assembly">
<type fullname="Foo" preserve="fields">
<method name=".ctor" />
</type>
<type fullname="Bar">
<method signature="System.Void .ctor(System.String)" />
<field signature="System.String _blah" />
</type>
<namespace fullname="My.Own.Namespace" />
<type fullname="My.Other*" />
</assembly>
</linker>
Получив указанный выше файл, компоновщик считает и применит инструкции для сборок mscorlib.dll (поставляется с Mono для Android) и My.Own.Assembly (пользовательский код).
Первый раздел для mscorlib.dll указывает, что тип System.Environment сохранит поле с именем mono_corlib_version и его метод get_StackTrace.
Обратите внимание, что здесь нужно указать имена методов считывания и задания, поскольку компоновщик работает с промежуточным языком и не поддерживает свойства C#.
Второй раздел для My.Own.Assembly.dll обеспечит сохранение в типе Foo всех полей (т. е. атрибута preserve="fields") и всех конструкторов (т. е. всех методов с именем .ctor на промежуточном языке). Тип Bar сохранит отдельные сигнатуры (не имена) для одного конструктора (который принимает один строковый параметр) и для конкретного строкового поля _blah.
Пространство имен My.Own.Namespace сохранит все типы, которые оно содержит.
Наконец, любой тип, полный имя которого (включая пространство имен) соответствует шаблону wild карта шаблон "My.Other*" сохранит все его поля и методы. Подстановочный символ * может встречаться в шаблоне "полное имя типа" несколько раз.
Связанные ссылки
- Компоновка в iOS
- Linking on Android (Компоновка на Android)
- Репозиторий GitHub компоновщика с примерами