Xamarin UI 测试“1 不是受支持的代码页。”

Xamarin UI Test "1 is not a supported code page."

我在尝试 运行 xamarin UI 测试时遇到计算机问题。这是一个 xamarin 表单项目,我正在 android 设备上构建和测试。我正在使用 visual studio 社区 2017 和 windows.

我在自己的项目和微软提供的示例项目中都试过了:https://developer.xamarin.com/samples/test-cloud/Quickstarts/CreditCardValidator.Droid/

相同的代码可以在其他几台计算机上运行,​​据我所知设置相同。

我得到的错误是这样的:

System.ArgumentException : 1 is not a supported code page.
Parameter name: codepage

这是堆栈跟踪的结尾:

at System.Text.Encoding.GetEncoding(Int32 codepage)
at ICSharpCode.SharpZipLib.Zip.ZipFile.ReadEntries()
at ICSharpCode.SharpZipLib.Zip.ZipFile..ctor(FileStream file)
at Xamarin.UITest.Shared.Android.ApkFile.GetFileBytes(String fileName)

调试时我能得到的最后一行是这样的:

app = ConfigureApp.Android.Debug().ApkFile(appPath).StartApp(mode); 我检查过它是 apk 的正确路径,"mode" 是 AppDataMode.Clear.

我尝试更改我能找到的任何选项,例如项目属性或 visual studio 和 windows 设置。一切都是最新的,我尝试了 clean/build/restart visual studio 的所有组合。我查看了 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage 并没有发现任何与工作机器不同的地方。在搜索时,我没有找到任何能让我更接近解决方案的东西。这个错误似乎并不常见。 OEMCP(原始设备制造商代码页)在注册表中设置为 437,但在代码中记录 TextInfo.OEMCodePage 给出“1”,这就是错误的描述。也许这有帮助。

Thread.CurrentThread.CurrentCulture.TextInfo.OEMCodePage == 1

我的下一步是重新安装 visual studio 或 windows。

有同样的问题。将默认 windows 语言设置为英语(美国)以某种方式修复了它。

在代码层面,可以调用

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

例如在 AppInitializer.StartApp() 的开头。 那么您无需修改​​ Windows 设置即可 运行 测试。