Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Если набора параметров по умолчанию недостаточно, вы можете выполнить связывание с помощью 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 компоновщика с примерами