C#确定是否使用mono编译

时间:2012-06-28 18:54:56

标签: c# .net-4.0 mono

  

可能重复:
  How can I conditionally compile my C# for Mono vs. Microsoft .NET?

我正在用C#编写代码,它使用.NET反射,包括一些Mono尚未提供的功能。我处理这个问题的简单方法是使用少量条件:

 #if MONO
        ... stuff that works on mono ....
 #else
        ... stuff that works on .NET 4.0 but not (yet) on mono ...
 #endif

所以这是我的问题:是否有任何预定义的标志我可以通过这种方式测试Mono csharp编译器是自动定义的,或者如果没有,那么.NET csharp编译器预先定义,我可以用这种方式测试吗?

它需要是一个编译时测试(我知道如何在运行时确定平台,但那太晚了)

1 个答案:

答案 0 :(得分:1)

在运行时确定平台是首选。使用Mono的C#编译器编译程序并在.NET上运行(甚至可以在.NET运行时直接运行Mono的C#编译器)并不罕见。

__MonoCS__仅用于编译器变通办法,绝不应用于限制目标平台。