Проверка чувствительности к регистру пути
Я пытаюсь преобразовать пути в каноническую форму, чтобы сравнить их. Я почти там, но застрял с корпусом:
Если пути не чувствительны к регистру (например, в Windows), мой последний шаг должен быть чем-то вроде path = path.ToUpper() или ToLower (). В других системах (например, Linux, OSX) этот последний шаг следует пропустить.
Есть ли правильный способ обнаружить это ?
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, }