Özel Bağlayıcı Yapılandırması
Varsayılan seçenek kümesi yeterli yoksa, bağlama işlemini, bağlantıcıdan ne istediğinizi açıklayan bir XML dosyasıyla devam edin.
Türün, yöntemlerin ve/veya alanların uygulamanıza yönelik olarak ortadan kaldırılmasını sağlamak için ek tanımlar sebilirsiniz. Kendi kodunda tercih edilen yol, iOS'ta bağlama ve Android'de Bağlama kılavuzlarında ele alınarak [Preserve]özel özniteliği kullanmaktır.[Preserve]
Ancak SDK veya ürün derlemelerinden bazı tanımlara ihtiyacınız varsa, xml dosyası kullanmak en iyi çözümünüz olabilir (bağlantıcının ihtiyacınız olan şeyi ortadan kaldırmaması için kod eklemek yerine).
Bunu yapmak için, bir XML dosyasını, sırasıyla yöntem ve alan düğümlerini içeren tür düğümlerini içeren derleme düğümlerini içeren üst düzey <linker>öğesiyle tanımlayın.<linker>
Bu linker açıklama dosyasını edin sonra projenize ekleyin ve:
- Android için: Derleme Eylemi'nin içinLinkDescription'u ayarlayın
- iOS için: Derleme Eylemi'nin içinLinkDescription'u ayarlayın
Aşağıdaki örnek, XML dosyasının nasıl göründüğünü gösterir:
<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>
Yukarıdaki örnekte, linker (Android için Mono ile birlikte gönderilir) ve (kullanıcı kodu) derlemeleri üzerindeki yönergeleri okur mscorlib.dllMy.Own.Assembly ve uygulayabilir.
için ilk mscorlib.dll bölüm, türün kendi System.Environment adlı alanını ve yöntemini mono_corlib_version korumasını get_StackTrace sağlayacaktır.
Linker IL üzerinde çalışır ve C# özelliklerini anlamazken, getter ve/veya setter yöntemi adlarının kullanılmalıdır.
için ikinci bölüm, türün tüm alanlarını (özniteliği) ve tüm oluşturucularını (IL'de adlı tüm yöntemler) korumasını My.Own.Assembly.dllFoopreserve="fields".ctor sağlar. Tür, bir oluşturucu (tek bir dize parametresi kabul eder) ve belirli bir dize alanı için belirli imzaları Bar (adları değil) _blah korur.
Ad My.Own.Namespace alanı, içerdiği tüm türleri korur.
Son olarak, tam adı (ad alanı dahil) "My.Other*" joker karakteriyle eşleşen tüm türler tüm alanlarını ve yöntemlerini korur. Joker karakter bir * "tam ad türü" deseni içinde birden çok kez dahil olabilir.