2012-06-01 6 views
6

MonodroidアプリケーションでDotNetZipライブラリを使用しようとしています。共有ランタイムビルドオプションを有効にすると、すべてうまく動作しているようです。私は共有ランタイムを無効にすると、ライン共有されていないランタイムでMonodroidプロジェクトを構築するとエンコードが失敗する

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

は(エンコーディング名「IBM437」はサポートされていない)例外を生成します。私は "追加サポートされているエンコーディング"リストのすべてのボックスをチェックしましたが、それは役に立たないようです。誰でもアイデアはありますか?

+0

bugzilla.xamarin.comでバグを報告し、テストケースを添付できますか?私たちは、CP1252を使用したサンプルを用意しています。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

答えて

11

私はまったく同じ問題を抱えていました。

まず、プロジェクトのプロパティで「西」のエンコーディングを追加したことを確認してください。

Xamarin Internationalization

それはトリックをしない場合は、問題は必要なのdllではないということです.apkのアセンブリフォルダにコピーされます。これは自動的に起こるはずですが、そうではありません。それが修正されていた場合、あなたが見ることができるので、私は、バグを提出:

Mono for Android/Xamarin Bugzilla

ない場合は、こちら(Xamarinから)私のために働いた回避策は次のとおりです。

  1. 手動I18Nへの参照を追加します。両方のDLLの.dllとI18N.West.dll
  2. 「真」に「ローカルコピー」プロパティを設定し
  3. は、2つのDLLはの.apk

    に追加取得するには、次のダミーのコードを追加します。

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

  4. 'リンク' が希望このことができます 'なし'

に設定されていることを確認してください!

+0

あなたのソリューションを試してみて、それが機能することを確認できます。投稿していただきありがとうございます。 (私の回避策はすべてのIBM437のリファレンスをUTF-8に置き換えていた。) – Ash

関連する問題