【问题标题】:C# CultureInfo.GetCultures returns a (nearly) empty listC# CultureInfo.GetCultures 返回一个(几乎)空列表
【发布时间】:2014-08-20 21:24:08
【问题描述】:

Windows 8.1 专业版、Visual Studio 2013、.NET Framework 4.5.2

代码如下:

var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
Console.WriteLine("Culture count: " + cultures.Length);

这是输出:

Culture count: 2

这两种文化是在CultureData.GetCultures 方法中添加的zh-CHS 和zh-CHT。 CultureData.nativeEnumCultureNames 应该返回其他文化,但似乎返回的是一个空数组。

这种行为似乎仅限于单个工作站。我已经在其他计算机上尝试了相同的代码并且得到了正常的结果。我将如何解决这个问题?我尝试重新安装 .NET 框架,但没有成功。

编辑 1:这只影响 .NET 4/4.5。如果我的项目以 .NET 3.5 为目标,它可以工作,返回 311 种文化。

【问题讨论】:

  • MSDN 上的 note 还明确提到了 “zh-CHS 和 zh-CHT 文化”,很有趣。 msdn.microsoft.com/en-us/library/… 显然在中国电脑上不允许其他文化;)
  • 是否有人在该特定工作站上删除或卸载了某些东西?这种行为并不常见。也许重新安装有问题的机器?
  • 不,这是全新的安装。一周前从 Razer 买了笔记本电脑,从那以后我就一直在使用它。附带 Windows 8.1 标准,通过许可证代码升级到 Pro。安装了VS2013等。这是我第一次遇到问题。理想情况下,我宁愿不必恢复到出厂默认设置,或者更糟糕的是,应用自定义图像。

标签: .net windows cultureinfo


【解决方案1】:

检查是否存在键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\ExtendedLocale。如果它丢失,有一个 known issue 可以通过添加此密钥来解决。

【讨论】:

  • 太棒了。就这样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多