Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Se o conjunto padrão de opções não for o suficiente, faça o processo de vinculação com um arquivo XML que descreve o que você deseja do vinculador.
Você pode fornecer definições extras para o vinculador para garantir que o tipo, os métodos e/ou os campos não sejam eliminados do seu aplicativo. Em seu próprio código, o modo preferido é usar o atributo personalizado [Preserve], conforme discutido nos guias Vinculação no iOS e Vinculação no Android.
No entanto, se você precisar de algumas definições dos assemblies do SDK ou do produto, a melhor solução para você poderá ser usar um arquivo XML (em vez de adicionar código que garantirá que o vinculador não eliminará itens de que você precise).
Para fazer isso, você define um arquivo XML com o elemento de nível superior <linker>, que contém nós de assembly que, por sua vez, contêm nós de tipo que, por sua vez, contêm nós de método e de campo.
Quando você tiver esse arquivo de descrição de vinculador, adicione-o ao seu projeto e:
- Para Android : defina a Ação de Build como LinkDescription
- Para iOS : defina a Ação de Build como LinkDescription
O exemplo a seguir mostra a aparência do arquivo 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>
No exemplo acima, o vinculador lerá e aplicará as instruções aos assemblies mscorlib.dll (fornecido com o Mono para Android) e My.Own.Assembly (código do usuário).
A primeira seção, para mscorlib.dll, garantirá que o tipo System.Environment preservará seu campo denominado mono_corlib_version e seu método get_StackTrace.
Observe que os nomes de método getter e/ou setter devem ser usados, pois o vinculador funciona em IL e não entende propriedades do C#.
A segunda seção, para My.Own.Assembly.dll, garantirá que o tipo Foo preservará todos os seus campos (ou seja, o atributo preserve="fields") e todos os seus construtores (ou seja, todos os métodos chamados .ctor em IL). O tipo Bar preservará assinaturas específicas (não nomes) para um construtor (que aceita um único parâmetro de cadeia de caracteres) e para um campo de cadeia de caracteres específica _blah.
O namespace My.Own.Namespace preservará todos os tipos que ele contém.
Por fim, qualquer tipo cujo nome completo (incluindo o namespace) corresponda ao padrão curinga "My.Other*" preservará todos os seus campos e métodos. O caractere curinga * pode ser incluído várias vezes dentro de um padrão "tipo nomecompleto".