.NET Core 和 .NET Framework 之间的 CultureInfo 有所不同

Deu*_*ion 5 c# globalization locale cultureinfo .net-core

.NET Core.NET Framework之间的 CultureInfo 似乎存在一些差异。这有什么理由吗?

例子:

var italian = CultureInfo.GetCultureInfo("it").TextInfo.CultureName;
Run Code Online (Sandbox Code Playgroud)

.NET Core上解析为:

it
Run Code Online (Sandbox Code Playgroud)

虽然它之前在.NET Framework上解析为:

it-IT
Run Code Online (Sandbox Code Playgroud)

这会破坏一些单元测试。在两个干净的控制台项目中运行它会产生不同的结果。尝试从 Nuget 添加 System.Globalization,结果没有任何差异。

是否需要一些配置才能使其相同,或者它们是否完全破坏了 CultureInfo?

Hol*_*ger 2

我确认了这种行为,但 Core 更有结论性。

你要求文化“它”,你就会得到文化“它”。

.NET Framework 正在添加更多详细信息,并为 it-IT 指定默认的亚文化。

如果你要求

var italian = CultureInfo.GetCultureInfo("it-IT").TextInfo.CultureName;
Run Code Online (Sandbox Code Playgroud)

直接地。

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

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