【发布时间】:2010-02-18 12:02:12
【问题描述】:
我对安装在英国服务器上的 c# 程序集(使用 Visual Studio 2005 编写的 .net 2.0)有疑问,应该使用英国区域设置。
我的代码所做的是将 dd/MM/yyyy 格式的日期转换为 utc。即 yyyy-mm-dd。问题出现在像 16/02/2010 这样的日期,其中组件无法转换日期并返回错误。调试后我意识到,由于一个奇怪的原因,System.CultureInfo 返回的 CultureInfo 是 en-US。
我可以使用以下方式以编程方式更改这些设置:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB", false);
我的代码运行良好。
但是我不想一直这样做,因为我的系统应该是英国的。不是我们。 那么,如何将 .Net 框架的默认文化更改为默认 en-GB 而不是 en-US ?
有关信息:
- 我已尝试更新 machine.config 文件并为全球化部分指定culture=en-GB(它被设置为中性),但它也不起作用[已经为 1.1 和 2.0 做过] 但这是可能的我没有正确更改它。
- 我已经验证了我的 windows 区域设置,它们肯定设置为英国,日期为 dd/MM/yyyy
- 我在虚拟服务器中运行并验证了我的主机系统。它也设置为英国
编辑:
关于上下文的一些额外细节。有问题的程序集是通过 COM 互操作从作为 COM+ 应用程序运行的本机 C++ 第三方组件调用的。
【问题讨论】:
-
看看问题是来自 C++/COM 环境还是操作系统可能会很有趣。如果您只是使用 Console.WriteLine(Thread.CurrentThread.CurrentCulture.DisplayName); 编写一个简单的控制台应用程序怎么办?它显示了什么?