iOS / Xamarin : exclure une assembly du linker

Lors de la compilation d'une application Xamarin, la phase de linkage permet d'enlever toutes les parties non utilisées de votre code managé. Nous en avions d'ailleurs déjà parlé un peu dans un précédent article sur Android et Proguard. Il arrive que les outils Xamarin se mélangent les pinceaux et qu'il soit nécessaire de demander au linker de ne pas traiter une assembly.

Cela arrive souvent au bon moment, c'est à dire lorsque vous souhaitez publier sur les Store et que le linker est nécessaire. Vous lancez la compilation qui marche très bien en débug et le type de message ci-dessous apparait :

The assembly System.Threading.Tasks was referenced
by another assembly, but at the same time linked out 
by the linker... 
Please fill a bug at https://bugzilla.xamarin.com/

 

On se retrouve notamment dans ce cas de figure lorsqu'on ajoute un autre éxecutable à une application iOS (par exemple un widget).


Il faut donc désactiver le linker mais nous n'allons pas le faire pour le projet entier afin de profiter de ses avantages (notamment la taille réduite du package). Il s'agit alors de lire la très bonne documentation Xamarin et d'ajouter le paramètre suivant dans les propriétés du projet, onglet iOS Build, champ "additional mtouch arguments" :

--linkskip=System.Threading.Tasks

 xamarin ios linking

 

Happy coding :)

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus