0

可能重复:
如何有条件地为 Mono 与 Microsoft .NET 编译我的 C#?

我正在用 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 编译器预定义,我可以这样测试?

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

4

1 回答 1

1

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

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

于 2012-06-28T19:47:59.207 回答