Adler_lug
@Adler_lug

Как быстро определить ОС (Windows/Linux) при кроссплатформенной разработке на С# .Net 5/6?

Вроде задача банальная, но как-то на вскидку быстро не нашел решения.
Имеются ли какие-то встроенные в .Net средства определение, под какой ОС запущена программа?
Что-то кроме как по OperatingSystem.Platform определять или какой-то отдельный свой код определения, а что-то направленное именно на кроссплатформенность.

А еще лучше, если есть, какие-то (P.S. готовые "из коробки") директивы предпроцессора, что бы определение ОС не фигурировало в коде?
Т.е. что-то вроде:
#if LINUX
string cmd = @"/bin/bash";
#else
string cmd = @"c:\Windows\System32\cmd.exe"
#end

Да, я знаю, что /bin/bash это симлинк, а писать абсолютный путь неправильно, но это просто пример.
  • Вопрос задан
  • 426 просмотров
Решения вопроса 1
А еще лучше, если есть, какие-то директивы предпроцессора, что бы определение ОС не фигурировало в коде?

Директивы препроцессора на то и препроцессора, что они только при компиляции проверяются, но можно.
Вариант раз - RuntimeIdentifier
Вариант два - объявить своё свойство.

Если динамически в коде, то можно через OperatingSystem.IsLinux()
Или через System.Runtime.InteropServices.RuntimeInformation.IsOsPlatform
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы