Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli domyślny zestaw opcji nie jest wystarczający, możesz prowadzić proces łączenia z plikiem XML, który opisuje, czego chcesz użyć z konsolidatora.
Możesz podać dodatkowe definicje konsolidatorowi, aby upewnić się, że typ, metody i/lub pola nie zostaną wyeliminowane z aplikacji. We własnym kodzie preferowanym sposobem jest użycie atrybutu niestandardowego [Preserve] , zgodnie z opisem w przewodnikach Łączenie w systemie iOS i Łączenie w systemie Android .
Jeśli jednak potrzebujesz pewnych definicji z zestawu SDK lub zestawów produktów, użycie pliku XML może być najlepszym rozwiązaniem (w porównaniu z dodawaniem kodu, który zapewni konsolidatorowi, że nie usunie potrzebnych elementów).
W tym celu należy zdefiniować plik XML z elementem <linker> najwyższego poziomu, który zawiera węzły zestawu , które z kolei zawierają węzły typu , które z kolei zawierają metody i węzły pól .
Po utworzeniu tego pliku opisu konsolidatora dodaj go do projektu i:
- W przypadku systemu Android: ustaw akcję kompilacji na LinkDescription
- W przypadku systemu iOS ustaw akcję kompilacji na LinkDescription
W poniższym przykładzie pokazano, jak wygląda plik 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>
W powyższym przykładzie konsolidator odczytuje i zastosuje instrukcje dotyczące mscorlib.dll zestawów (dostarczanych z rozwiązaniem Mono dla systemu Android) i My.Own.Assembly (kod użytkownika).
Pierwsza sekcja dla mscorlib.dllelementu zapewni, że System.Environment typ zachowa jego pole o nazwie mono_corlib_version i jego get_StackTrace metodę.
Zwróć uwagę, że nazwy metod getter i/lub setter muszą być używane, ponieważ konsolidator działa w języku IL i nie rozumie właściwości języka C#.
Druga sekcja , dla My.Own.Assembly.dll, zapewni, że Foo typ zachowa wszystkie pola (tj. preserve="fields" atrybut) i wszystkie jego konstruktory (tj. wszystkie metody o nazwie .ctor w IL). Typ Bar zachowa określone podpisy (nie nazwy) dla jednego konstruktora (który akceptuje pojedynczy parametr ciągu) i dla określonego pola _blahciągu .
My.Own.Namespace Przestrzeń nazw zachowa wszystkie zawarte w nim typy.
Na koniec każdy typ, którego pełna nazwa (w tym przestrzeń nazw) jest zgodna ze wzorcem symboli wieloznacznych "My.Other*", zachowa wszystkie jego pola i metody. Symbol wieloznaczny * może być dołączany wiele razy w ramach wzorca "type fullname".