2015-11-19 3 views
3

System.Environment.OSVersion, похоже, не является частью .net core 5.0 (dnxcore50).Замена System.Environment.OSVersion .NET Core 5.0 Framework?

Я пытаюсь определить, какая ОС пользователь находится так, когда они сохранить файл в файловой системе, я знаю достаточно, чтобы использовать «/» или «\»

Что я должен использовать вместо этого?

+4

Видимо, эта особенность была [намеренно опущены] (https://github.com/dotnet/corefx/issues/1017) для предотвращения разработчиков от использования версии номера для проверки доступности функций. Какова основная проблема, которую вы хотите решить? – Heinzi

+0

Обсуждалась эта проблема с github: https://github.com/dotnet/corefx/issues/1017. На данный момент эта функция недоступна –

+0

Я пытаюсь определить, на какой ОС находится пользователь, поэтому, когда они сохраняют файл в файловой системе, я знаю скорее, чтобы использовать '/' или '\' – allencoded

ответ

6

Не делайте обнаружение самостоятельно. Используйте System.IO.Path. DirectorySeparatorChar. Кроме того, если вы всегда используете Path для управления путями, вы должны получить форматирование, которое вам нужно. Это также работает с URL-адресами.

0

Вы можете получить его обратно:

using System.Runtime.InteropServices; 

namespace System 
{ 


    // [ComVisible(true)] 
    // [Serializable] 
    public enum PlatformID 
    { 
     Win32S = 0, 
     Win32Windows = 1, 
     Win32NT = 2, 
     WinCE = 3, 
     Unix = 4, 
     // Since NET 3.5 SP1 or silverlight 
     Xbox = 5, 
     MacOSX = 6, 
    } 


    public class OperatingSystem 
    { 
     private Architecture m_arch; 
     private bool m_isARM; 
     private bool m_isX86; 
     private bool m_isLinux; 
     private bool m_isOSX; 
     private bool m_isWindows; 
     private PlatformID m_platform; 

     public OperatingSystem() 
     { 
      m_arch = RuntimeInformation.ProcessArchitecture; 
      m_isARM = (m_arch == Architecture.Arm || m_arch == Architecture.Arm64); 
      m_isX86 = (m_arch == Architecture.X86 || m_arch == Architecture.X64); 

      m_isLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux); 
      m_isOSX = RuntimeInformation.IsOSPlatform(OSPlatform.OSX); 
      m_isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); 

      if (m_isLinux || m_isOSX) 
       m_platform = PlatformID.Unix; 
      else if (m_isWindows) 
      { 
       m_platform = PlatformID.Win32NT; 
      } 
      else 
       throw new System.PlatformNotSupportedException("Operating system not supported."); 
     } 

     public PlatformID Platform 
     { 
      get 
      { 
       return m_platform; 
      } 
     } 
    } 



    public class OldEnvironment 
    { 

     private static OperatingSystem m_OS; 

     static OldEnvironment() 
     { 
      m_OS = new OperatingSystem(); 
     } 

     public static OperatingSystem OSVersion 
     { 
      get 
      { 
       return m_OS; 
      } 
     } 

    } 


} 
Смежные вопросы