2012-06-01 1 views
6

J'essaie d'utiliser la bibliothèque DotNetZip dans mon application Monodroid. Tout semble fonctionner correctement lorsque j'active l'option de compilation Shared Runtime. Lorsque désactiver partagée à l'exécution, la ligneL'encodage échoue lorsque je construis un projet Monodroid avec une exécution non partagée

static System.Text.Encoding ibm437 = System.Text.Encoding.GetEncoding("IBM437"); 

génère une exception (nom encoding 'IBM437' non supporté). J'ai coché toutes les cases de la liste "Additional Supported Encodings", mais cela ne semble pas aider. Quelqu'un a des idées?

+0

Pouvez-vous déposer un bug sur bugzilla.xamarin.com et attacher un test? Nous avons un exemple qui utilise CP1252 et fonctionne: https://github.com/xamarin/monodroid-samples/blob/master/SanityTests/Hello.cs#L332 https://github.com/xamarin/monodroid-samples/blob /master/SanityTests/SanityTests.csproj#L110 – jonp

Répondre

11

J'ai eu exactement le même problème.

Tout d'abord, assurez-vous que vous avez ajouté l'encodage « Ouest » dans les propriétés du projet:

Xamarin Internationalization

Si cela ne fait pas l'affaire, le problème est que les dll nécessaires ne sont pas être copié dans le dossier assemblages .apk. Cela devrait arriver automatiquement, mais ce n'est pas le cas. J'ai déposé un bug, vous pouvez voir s'il a été fixé:

Mono for Android/Xamarin Bugzilla

Sinon, voici une solution qui a fonctionné pour moi (de Xamarin):

  1. Ajouter manuellement Références à I18N .dll et I18N.West.dll
  2. Définir les propriétés de la « copie locale » à « true » pour les deux dll
  3. Ajoutez le code suivant factice pour obtenir le 2 dll ajouté à la .apk

    var ignorer = new I18N.West.CP437();

  4. Assurez-vous que 'liaison' est réglé sur 'Aucun'

Hope this helps!

+0

Vous venez d'essayer votre solution et pouvez confirmer que cela fonctionne. Merci d'avoir posté. (Ma solution de contournement remplaçait chaque référence IBM437 par UTF-8.) – Ash

Questions connexes