Aracılığıyla paylaş


Özel Bağlayıcı Yapılandırması

Varsayılan seçenek kümesi yeterli değilse, bağlayıcıdan ne istediğinizi açıklayan bir XML dosyasıyla bağlama işlemini yönlendirebilirsiniz.

Türün, yöntemlerin ve/veya alanların uygulamanızdan kaldırılmadığından emin olmak için bağlayıcıya ek tanımlar sağlayabilirsiniz. Kendi kodunuzda tercih edilen yol, iOS'ta Bağlama ve Android'de Bağlama kılavuzlarında açıklandığı gibi özel özniteliği kullanmaktır[Preserve]. Ancak SDK'dan veya ürün derlemelerinden bazı tanımlara ihtiyacınız varsa, XML dosyası kullanmak en iyi çözümünüz olabilir (bağlayıcının ihtiyacınız olanları ortadan kaldırmamasını sağlayacak kod eklemek yerine).

Bunu yapmak için, sırasıyla yöntem ve alan düğümlerini içeren tür düğümleri içeren derleme düğümlerini içeren en üst düzey öğeye <linker> sahip bir XML dosyası tanımlarsınız.

Bu bağlayıcı açıklama dosyasını aldıktan sonra projenize ekleyin ve:

  • Android için: Derleme Eylemini LinkDescription olarak ayarlayın
  • iOS için: Derleme Eylemini LinkDescription olarak ayarlayın

Aşağıdaki örnekte XML dosyasının nasıl göründüğü gösterilmektedir:

<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, bağlayıcı (Android için Mono ile birlikte gönderilir) ve (kullanıcı kodu) derlemelerindeki mscorlib.dll yönergeleri okur ve My.Own.Assembly uygular.

için mscorlib.dllilk bölüm, türün System.Environment adlı mono_corlib_version alanını ve yöntemini korumasını get_StackTrace sağlar. Bağlayıcı IL üzerinde çalıştığından ve C# özelliklerini anlamadığından, alıcı ve/veya ayarlayıcı yöntemi adlarının kullanılması gerektiğini unutmayın.

için My.Own.Assembly.dllikinci bölüm, türün Foo tüm alanlarını (öznitelik preserve="fields" gibi) ve tüm oluşturucularını (IL'de adlı .ctor tüm yöntemler) koruyacağından emin olur. Tür, Bar bir oluşturucu (tek bir dize parametresi kabul eden) ve belirli bir dize alanı _blahiçin belirli imzaları (adları değil) korur. Ad My.Own.Namespace alanı içerdiği tüm türleri korur. Son olarak, tam adı (ad alanı dahil) "My.Other*" joker karakter deseni ile eşleşen her tür, tüm alanlarını ve yöntemlerini korur. Joker karakter * bir "tür tam adı" deseninde birden çok kez eklenebilir.