C# 当我使用非共享运行时构建Monodroid项目时,Get编码失败

C# 当我使用非共享运行时构建Monodroid项目时,Get编码失败,c#,character-encoding,xamarin.android,C#,Character Encoding,Xamarin.android,我正在尝试在我的Monodroid应用程序中使用DotNetZip库。当我启用共享运行时构建选项时,一切似乎都正常工作。当我禁用共享运行时,该行 static System.Text.Encoding ibm437 = System.Text.Encoding.GetEncoding("IBM437"); 生成异常(不支持编码名称“IBM437”)。我已经勾选了“其他支持的编码”列表中的每个框,但它似乎没有帮助。有人有什么想法吗?我也有同样的问题 首先,确保在项目属性中添加了“West”编码:

我正在尝试在我的Monodroid应用程序中使用DotNetZip库。当我启用共享运行时构建选项时,一切似乎都正常工作。当我禁用共享运行时,该行

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

生成异常(不支持编码名称“IBM437”)。我已经勾选了“其他支持的编码”列表中的每个框,但它似乎没有帮助。有人有什么想法吗?

我也有同样的问题

首先,确保在项目属性中添加了“West”编码:

如果这不起作用,问题是所需的DLL没有被复制到.apk的assemblies文件夹中。这应该是自动发生的,但事实并非如此。我提交了一个bug,因此您可以查看它是否已修复:

如果没有,这里有一个对我有效的解决方法(来自Xamarin):

  • 手动添加对I18N.dll和I18N.West.dll的引用
  • 将两个DLL的“复制本地”属性设置为“true”
  • 添加以下伪代码以将2个DLL添加到.apk

    var ignore=new I18N.West.CP437()

  • 确保“链接”设置为“无”


  • 希望这有帮助

    你能在bugzilla.xamarin.com上提交一个bug并附上一个测试用例吗?我们有一个使用CP1252且有效的示例:刚刚尝试了您的解决方案,可以确认它有效。谢谢你的发帖。(我的解决方法是用UTF-8替换每个IBM437参考。)