2012-06-01 10 views
6

Próbuję użyć biblioteki DotNetZip w mojej aplikacji Monodroid. Wydaje się, że wszystko działa dobrze, gdy włączam opcję kompilacji Shared Runtime. Kiedy wyłączyć Shared wykonywania, linięPobieranie Kodowanie nie powiedzie się, gdy buduję projekt Monodroid z niedziałającym środowiskiem wykonawczym

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

generuje wyjątek (nazwa Kodowanie „IBM437” nie są obsługiwane). Sprawdziłem każde pole na liście "Dodatkowe obsługiwane kodowania", ale wydaje się, że nie pomaga. Ktoś ma jakieś pomysły?

+0

Czy możesz zgłosić błąd na stronie bugzilla.xamarin.com i załączyć testówkę? Mamy próbkę, która używa CP1252 i działa: 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

Odpowiedz

11

Miałem dokładnie ten sam problem.

Po pierwsze, upewnij się, że dodaliśmy kodowanie „Zachód” we właściwościach projektu:

Xamarin Internationalization

Jeśli to nie załatwi, problemem jest to, że nie są potrzebne biblioteki DLL kopiowanie do folderu assemblies .apk. Powinno to nastąpić automatycznie, ale tak się nie dzieje. I złożony bug, dzięki czemu można sprawdzić, czy jest już ustalona:

Mono for Android/Xamarin Bugzilla

Jeśli nie, tutaj jest obejście że pracował dla mnie (z Xamarin):

  1. ręcznie dodać referencje do I18N .dll i I18N.West.dll
  2. Ustaw właściwości „Kopia lokalna” na „true” dla obu bibliotek DLL
  3. dodaj następujący kod atrapę, aby uzyskać 2 DLL dodawane do apk

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

  4. Upewnij się, że 'Linking' jest ustawiony na 'None'

nadzieję, że to pomaga!

+0

Po prostu wypróbowałeś swoje rozwiązanie i możesz potwierdzić, że działa. Dzięki za publikację. (Moje obejście zastępowało wszystkie odwołania do IBM437 za pomocą UTF-8). – Ash

Powiązane problemy