2012-06-01 11 views
6

Estoy tratando de usar la biblioteca DotNetZip en mi aplicación Monodroid. Todo parece funcionar bien cuando habilito la opción de compilación Shared Runtime. Cuando desactivo compartida en tiempo de ejecución, la líneaObtener codificación falla cuando construyo el proyecto Monodroid con tiempo de ejecución no compartido

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

genera una excepción (nombre de codificación 'IBM437' no es compatible). Revisé todas las casillas de la lista "Codificaciones admitidas adicionales", pero no parece ser de ayuda. ¿Alguien tiene alguna idea?

+0

¿Puede presentar un error en bugzilla.xamarin.com y adjuntar un caso de prueba? Tenemos una muestra que usa CP1252 y funciona: 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

Respuesta

11

Tuve exactamente el mismo problema.

primer lugar, asegúrese de que ha agregado la codificación "Oeste" en las propiedades del proyecto:

Xamarin Internationalization

Si eso no hace el truco, el problema es que los archivos DLL necesarios no están copiarse a la carpeta de ensamblados de .apk. Esto debería suceder automáticamente, pero no es así. Yo presenté un error, para que pueda ver si se ha fijado:

Mono for Android/Xamarin Bugzilla

Si no, aquí es una solución que funcionó para mí (de Xamarin):

  1. manualmente agregar referencias a I18N .dll y I18N.West.dll
  2. Definición de las propiedades de la 'copia local' a 'verdadero' para ambos dlls
  3. añadir el siguiente código ficticio para obtener los 2 dlls añade a la apk

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

  4. Asegúrese de que 'vinculación' está en 'Ninguno'

Espero que esto ayude!

+0

Acabo de probar su solución y puedo confirmar que funciona. Gracias por publicar. (Mi solución fue reemplazar cada referencia IBM437 con UTF-8.) – Ash

Cuestiones relacionadas