可能重复:
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编译器预先定义,我可以用这种方式测试吗?
它需要是一个编译时测试(我知道如何在运行时确定平台,但那太晚了)
答案 0 :(得分:1)
在运行时确定平台是首选。使用Mono的C#编译器编译程序并在.NET上运行(甚至可以在.NET运行时直接运行Mono的C#编译器)并不罕见。
__MonoCS__
仅用于编译器变通办法,绝不应用于限制目标平台。