我怎样才能有条件地编译我的C#单声道与微软.NET?

我需要一个条件编译开关,知道我是否正在为单声道或MS .NET运行时编译。 我该怎么做?

单声道编译器定义__MonoCS__

但是,但是,但是 ,单声道的全部重点是,你可以把你用VS编译的程序集运行在单声道上,反之亦然。

在我看来,如果你需要有Mono和MS.NET的差异,那么你需要在运行时做出这些决定。

在运行时检测单声道的标准方法是:

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

很明显,有时候一个平台上的代码与另一个平台上的代码会有所不同,您可能希望在运行时或编译时这样做。 有时候不能在运行时完成。

例如:

Mono被用作Xamarin的Ios,Android和Mac工具包的基础。 虽然这些代码有很多共同的代码,但是它们也只有一个类似的平台。 使用这些工具包进行开发时,您将开发不能在平台之间交换的本地软件包。

一个简单的例子是文件名和path。 这些在每个平台上都不同。 我只是可能有一点条件来加载每个平台不同的string。 有些平台具有一些特定的文件名。

这将是很好,如果有一些代码返回当前平台 – 无论是UNIX,iOS,Mac,X86,X64,XBox等….