C# CultureInfo在.NET Core和.NET Framework之间有所不同

C# CultureInfo在.NET Core和.NET Framework之间有所不同,c#,.net-core,locale,globalization,cultureinfo,C#,.net Core,Locale,Globalization,Cultureinfo,在.NET Core和.NET Framework之间,CultureInfo似乎存在一些差异。 这有什么原因吗 例如: var italian = CultureInfo.GetCultureInfo("it").TextInfo.CultureName; 在上.NET Core解析为: it 虽然它以前解析为on.NET Framework以: it-IT 这打破了一些单元测试。 在两个干净的控制台项目中运行它会产生不同的结果。 尝试添加系统。Nuget的全球化在结果上没有差异 这是否

.NET Core.NET Framework之间,CultureInfo似乎存在一些差异。 这有什么原因吗

例如:

var italian = CultureInfo.GetCultureInfo("it").TextInfo.CultureName;
上.NET Core解析为:

it
虽然它以前解析为on.NET Framework以:

it-IT
这打破了一些单元测试。 在两个干净的控制台项目中运行它会产生不同的结果。 尝试添加系统。Nuget的全球化在结果上没有差异


这是否需要一些配置才能保持相同,或者它们是否破坏了CultureInfo altogheter?

我确认这一行为,但核心更具决定性

你要求文化“它”,你得到文化“它”

.NET Framework正在添加更多详细信息,并为其指定默认的子文化

如果你要求

var italian = CultureInfo.GetCultureInfo("it-IT").TextInfo.CultureName;
直接的

你将在两个世界中得到相同的结果


更改该字符串对于您的测试来说应该是一个小问题。

在[documentation for CultureInfo]()中提到可用的区域性可能因操作系统而异。也许这就是正在发生的事情?我总是尝试与亚文化合作。令人惊讶的是,在大文化和几个亚文化中存在着如此多的差异。要全球化您的代码,您应该进入亚文化层次的代码,以避免将来的问题,除了显式使用信息也不起作用之外:var culture=new CultureInfo(new RegionInfo(“sv SE”).Name);//核心为北部萨米人,网络为瑞典人。