Xamarin C#空项目异常:不支持文化

时间:2015-09-22 18:07:56

标签: c# xamarin-studio

刚刚下载了Xamarin Studio 5.9.6(版本23),进入了工具 - 选项 - 语言,并选择了#34;英语"作为"用户界面语言"。

当我创建一个新的C#"空项目"时,Xamarin抱怨说,显示一个对话框说:"发生错误 - 无法创建项目"。

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: 
The type initializer for 'Microsoft.FSharp.Compiler.SourceCodeServices.FSharpChecker' threw an exception. ---> System.TypeInitializationException: 
The type initializer for '<StartupCode$FSharp-Compiler-Service>.$Service' threw an exception. ---> System.TypeInitializationException: 
The type initializer for '<StartupCode$FSharp-Compiler-Service>.$Reactor' threw an exception. ---> System.Globalization.CultureNotFoundException: Culture is not supported.

Parameter name: culture
4096 (0x1000) is an invalid culture identifier.

有点奇怪的小烦恼。运行Windows 10 x64。我在这台PC上也有大量的Visual Studios,包括VS2015。

2 个答案:

答案 0 :(得分:2)

这是Xamarin Studio在Windows 10上选择语言的bug。它已在Xamarin Studio 5.10中修复。

这通常在选择英语时出现,通常这将使用非英语语言的Windows 10完成,配置Xamarin Studio使用英语不会更改UI文本,但仍会显示Windows使用的语言。

问题是在Windows 10上,很多从CultureInfo.GetCultures返回的英语非中性文化都有一个未指定的自定义区域设置ID(LCID),即0x1000。早期版本的Windows没有此问题。其中一种文化被用来设置当前的UI文化,因为它无效而被忽略了。根据Windows 10之前的MSDN文档,未指定的自定义区域设置ID分配给用户创建的自定义区域。在Windows 10中,此未指定的自定义区域设置ID将分配给任何没有唯一区域设置标识且没有完整系统提供的数据的区域性。因此,Windows 10会使用此未指定的区域设置ID返回更多区域设置。

由于Xamarin Studio使用了无效的文化,因此导致了F#异常。

现在,Xamarin Studio 5.10及更高版本会忽略具有未指定自定义区域设置ID的这些文化。

答案 1 :(得分:0)

这个错误的有趣之处在于它抱怨F#编译器。然而,我的意图是创建一个新的C#空项目。 ...由于我的Visual Studio实例,我确实加载了F#。而我在美国,并不像我试图加载不同的语言。

因此,快速解决此问题的方法是重新使用Xamarin工具 - 选项 - 语言,并将其更改回(默认)。

选择英语时出现用户错误(?)。