如何有条件地编译我的C#for Mono vs. Microsoft .NET?

Fre*_*nge 34 .net c# mono

我需要一个条件编译开关,它知道我是在编译单声道还是MS .NET运行时.我怎样才能做到这一点?

Wil*_*ean 58

Mono编译器定义 __MonoCS__

但是,但是, Mono的重点在于你可以使用VS构建的程序集并在Mono上运行,反之亦然.

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

在运行时检测Mono的标准方法是:

bool runningOnMono = Type.GetType ("Mono.Runtime") != null;
Run Code Online (Sandbox Code Playgroud)

  • 明白这一点,但是Mono在很多地方都有很多事情要做,并且没有必要惩罚MS的构建......好的提示虽然谢谢 (7认同)
  • @Will Dean您偶尔需要使用有条件的编辑.例如,Mono不支持该属性; ViewStateModeById,如果您使用它标记了类,则会触发运行时失败.所以你所说的并不完全准确...... (4认同)
  • 一个用例是在Mono上使用GTK#GUI,在.Net上使用Windows.Forms GUI. (2认同)