Проверка чувствительности к регистру пути


Я пытаюсь преобразовать пути в каноническую форму, чтобы сравнить их. Я почти там, но застрял с корпусом:

Если пути не чувствительны к регистру (например, в Windows), мой последний шаг должен быть чем-то вроде path = path.ToUpper() или ToLower (). В других системах (например, Linux, OSX) этот последний шаг следует пропустить.

Есть ли правильный способ обнаружить это ?

3 2

3 ответа:

Вы, вероятно, ищете систему.Окружающая среда.OSVersion . Это также позволит определить версию windows. Так что если вы хотите, то вы можете просто проверить, является ли версия Windows, а затем сделать корпус еще пропустить его.

Что-то вроде

System.OperatingSystem osInfo = System.Environment.OSVersion;
if(osInfo .Contains("Windows"))
{
  //Do casing
}
else
{
  //skip
}

Если вы знаете, какие ОС чувствительны к регистру, вы можете использовать следующее для проверки

Environment.OSVersion.Platform

Это перечисление с включенными различными операционными системами. Затем вы можете использовать это, чтобы проверить, нужно ли нормализовать строку или нет

Вы должны правильно определить операционную систему, в которой выполняется ваш код. После вы можете решить правильную стратегию в соответствии с правилами ОС. На первый взгляд ваш подход верен. Чтобы определить операционную систему, на которой вы работаете, попробуйте этот фрагмент

var OS = System.Environment.OSVersion;
var platform = OS.Platform;
var version = OS.Version; // or OS.VersionString
var servicePack = OS.ServicePack;
if(platform=="Unix")
{
...
}

Это может позволить вам определить совместимость. Результат "платформы" составляется в соответствии с перечислением Follow PlatformID в системе.Во время выполнения.Библиотека интерактивных сервисов.

// Summary:
//     Identifies the operating system, or platform, supported by an assembly.
[Serializable]
[ComVisible(true)]
public enum PlatformID
{
    // Summary:
    //     The operating system is Win32s. Win32s is a layer that runs on 16-bit versions
    //     of Windows to provide access to 32-bit applications.
    Win32S = 0,
    //
    // Summary:
    //     The operating system is Windows 95 or Windows 98.
    Win32Windows = 1,
    //
    // Summary:
    //     The operating system is Windows NT or later.
    Win32NT = 2,
    //
    // Summary:
    //     The operating system is Windows CE.
    WinCE = 3,
    //
    // Summary:
    //     The operating system is Unix.
    Unix = 4,
    //
    // Summary:
    //     The development platform is Xbox 360.
    Xbox = 5,
    //
    // Summary:
    //     The operating system is Macintosh.
    MacOSX = 6,
}