Подтвердить что ты не робот

Как я могу условно скомпилировать мой С# для Mono и Microsoft.NET?

Мне нужен условный компилятор, который знает, компилирую ли я для среды выполнения mono или MS.NET. Как я могу это сделать?

4b9b3361

Ответ 1

Компилятор Mono определяет __MonoCS__

НО, НО, НО, вся точка Mono заключается в том, что вы можете взять сборку, которую вы создали с помощью VS, и запустить ее на Mono или наоборот.

Мне кажется, что если вам нужно иметь различия между Mono и MS.NET, тогда вам нужно принимать эти решения во время выполнения.

Стандартный способ обнаружения Mono при Runtime:

bool runningOnMono = Type.GetType ("Mono.Runtime") != null;

Ответ 2

Понятно, что бывают случаи, когда код на одной платформе будет отличаться от кода на другом, и вы можете захотеть сделать это во время выполнения или, возможно, время компиляции. Иногда это невозможно сделать во время выполнения.

Например:

Моно используется как основа наборов инструментов Xamarin Ios, Android и Mac. Хотя у них много общего кода, у них также есть классы, которые появляются только на одной платформе. При разработке с помощью этих наборов инструментов вы разрабатываете собственные пакеты, которые не заменяются между платформами.

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

Было бы неплохо, если бы был немного кода, который вернул текущую платформу - будь то UNIX, iOS, Mac, X86, X64, XBox и т.д....