Элемент <CompatSortNLSVersion>

Указывает, что при операциях сравнения строк среда выполнения должна использовать устаревший порядок сортировки.

<configuration>
  <runtime>
    <CompatSortNLSVersion>

Синтаксис

<CompatSortNLSVersion
   enabled="4096"/>  

Атрибуты и элементы

В следующих разделах описаны атрибуты, дочерние и родительские элементы.

Атрибуты

Атрибут Описание
enabled Обязательный атрибут.

Указывает код языка, порядок сортировки которого должен использоваться.

Атрибут enabled

Значение Описание
4096 Код языка, представляющий альтернативный порядок сортировки. В этом случае 4096 представляет порядок сортировки платформа .NET Framework 3,5 и более ранних версий.

Дочерние элементы

Отсутствует.

Родительские элементы

Элемент Описание
configuration Корневой элемент в любом файле конфигурации, используемом средой CLR и приложениями .NET Framework.
runtime Содержит сведения о параметрах инициализации среды выполнения.

Remarks

Поскольку операции сравнения строк, сортировки и учета регистра, выполняемые System.Globalization.CompareInfo классом в платформа .NET Framework 4, соответствуют стандарту Unicode 5,1, результаты методов сравнения строк, таких как String.Compare(String, String) и, String.LastIndexOf(String) могут отличаться от предыдущих версий платформа .NET Framework. Если приложение зависит от устаревшего поведения, можно восстановить правила сравнения строк и сортировки, используемые в платформа .NET Framework 3,5 и более ранних версиях, включив <CompatSortNLSVersion> элемент в файл конфигурации приложения.

Важно!

Для восстановления устаревших правил сравнения и сортировки строк также требуется, чтобы в локальной системе была доступна библиотека динамической компоновки sort00001000.dll.

Устаревшие правила сортировки и сравнения строк можно также использовать в конкретном домене приложения, передав при создании этого домена строку "NetFx40_Legacy20SortingBehavior" в метод SetCompatibilitySwitches.

Пример

В следующем примере создаются экземпляры двух объектов String и вызывается метод String.Compare(String, String, StringComparison), чтобы сравнить их с использованием соглашений текущих языка и региональных параметров.

using System;

enum StringComparisonResult
{
    precedes = -1,
    equals = 0,
    follows = 1,
};

public class Example
{
   public static void Main()
   {
      string str1 = new string( new char[] {'\u0219', '\u021B', 'a' });
      string str2 = "a";

      Console.WriteLine("{0} {1} {2} in the sort order.",
                        str1,
                        (StringComparisonResult) String.Compare(str1, str2, StringComparison.CurrentCulture),
                        str2);
   }
}
Enum StringComparisonResult As Integer
    precedes = -1
    equals = 0
    follows = 1
End Enum

Module Example
    Public Sub Main()
        Dim str1 As String = ChrW(&h219) + ChrW(&h21B) + "a"
        Dim str2 As String = "a"

        Console.WriteLine("{0} {1} {2} in the sort order.", _
                          str1, _
                          CType(String.Compare(str1, str2, StringComparison.CurrentCulture), StringComparisonResult), _
                          str2)
    End Sub
End Module

При запуске примера на платформа .NET Framework 4 отображаются следующие выходные данные:

sta follows a in the sort order.  

Он совершенно отличается от выходных данных, отображаемых при выполнении примера на платформа .NET Framework 3,5:

sta equals a in the sort order.  

Однако если добавить в каталог примера следующий файл конфигурации, а затем запустить пример на платформа .NET Framework 4, то выходные данные идентичны тому, что были созданы в примере при его запуске на платформа .NET Framework 3,5.

<?xml version ="1.0"?>  
<configuration>  
   <runtime>  
      <CompatSortNLSVersion enabled="4096"/>  
   </runtime>  
</configuration>  

См. также