Культурно-инвариантное сравнение строк с учетом регистра возвращает разные результаты на разных компьютерах

Я обнаружил, что результаты теста на моей машине и на сервере сборки отличаются. Мне удалось найти одну строку, которая отличается. Это сравнение строк. Две строки отличаются в случае первого символа.

Тест ниже проходит на моем локальном компьютере и не проходит на компьютере сборки.

[TestClass]
public class Tests 
{
    [TestMethod]
    public void Strings()
    {
        Assert.IsFalse(0 == string.Compare("Term’s", "term’s", false, CultureInfo.InvariantCulture));
    }
}

Я также пытался изменить его наstring.Equals:

string.Equals("Term’s", "term’s", StringComparison.InvariantCulture);

string.Equals возвращает true на сервере сборки и возвращает false на моем локальном компьютере.

Порядковое сравнение дает одинаковые результаты на обеих машинах:

string.Compare("Term’s", "term’s", StringComparison.Ordinal))

Как я понимаю, InvariantCulture должен возвращать одинаковые результаты везде. Каким образом сравнение строк, зависящее от регистра, может зависеть от машины? Какие настройки я должен проверить, чтобы определить проблему?

Обновление: платформа и строка

Строка важна. Эти результаты можно наблюдать для строк с «экзотической» пунктуацией, такой какПРАВАЯ ЕДИНАЯ ЦИТАТА или жеПРАВИЛЬНАЯ ДВОЙНАЯ ЦИТАТА

Кажется, поведение воспроизводится на компьютерах с Windows 8. Вы можете увидеть это даже наhttps://dotnetfiddle.net/ если вы введете следующее:

using System;
using System.Globalization;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(0 == string.Compare("Terms", "terms", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term’s", "term’s", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term“s", "term“s", false, CultureInfo.InvariantCulture));
        Console.WriteLine(0 == string.Compare("Term”s", "term”s", false, CultureInfo.InvariantCulture));

        //outputs
        //False
        //True
        //True
        //True
    }
}

Environment.OSVersion (сервер): Microsoft Windows NT 6.2.9200.0
Environment.Is64BitOperatingSystem (сервера): True
Environment.Version (сервер) 4.0.30319.18449

Environment.OSVersion (локальный): Microsoft Windows NT 6.1.7601 с пакетом обновления 1
Environment.Is64BitOperatingSystem (местный): правда
Environment.Version (местный): 4.0.30319.18444

Обновление: ссылка на форумы MSDN

Это может быть известная ошибка в Windows 8, которая исправлена ​​в Windows 8.1.

http://social.msdn.microsoft.com/Forums/vstudio/en-US/4a1ab6b7-6dcc-46bf-8650-e0d9ebbf1735/stringcompare-not-always-casesensitive-on-windows-8?forum=netfxbcl

Ответы на вопрос(1)

Ваш ответ на вопрос