我试图解决的问题是为一个公共库添加多个目标框架(以前的NET45和NETSTANDARD2.0 )。这个库包含了许多用于排序字符串的实用类。我希望找到保持.NET 5.0应用程序具有与前面相同的排序结果的最佳方法。我想找出什么是最好的方法。
下面是一个例子。
比较.
和-
会在.NET框架4和.NET 5中返回不同的顺序。
这两个运行时的结果如下:
.
< _
- https://dotnetfiddle.net/I0yIr6.
> _
- https://dotnetfiddle.net/6YQCmAusing System;
using System.Globalization;
public class Program
{
public static void Main()
{
// returns -1 in NET47 but returns 1 in NET5_0
Console.WriteLine(string.Compare(".", "_", StringComparison.InvariantCulture));
Console.WriteLine(string.Compare(".", "_", StringComparison.CurrentCulture));
var cultureInfo = new CultureInfo("en-US", false);
Console.WriteLine(string.Compare(".", "_", true, cultureInfo));
}
}
发布于 2021-04-20 07:31:30
NLS确定.NET是为Windows应用程序使用国家语言支持(NLS)还是使用(ICU)全球化API。Windows5.0及更高版本默认在Windows2019年5月10日更新和更新时使用.NET全球化API。
Setting name Values
runtimeconfig.json System.Globalization.UseNls false - Use ICU globalization
true - Use NLS globalization
Environment variable DOTNET_SYSTEM_GLOBALIZATION_USENLS false - Use ICU globalization
true - Use NLS globalization
https://stackoverflow.com/questions/67181681
复制