我需要一个条件编译开关,它知道我是在编译单声道还是MS .NET运行时。我怎样才能做到这一点?
答案 0 :(得分:57)
Mono编译器定义__MonoCS__
但是,但是,Mono的全部意义在于,您可以使用VS构建的程序集并在Mono上运行,反之亦然。
在我看来,如果你需要Mono vs MS.NET的差异,那么你需要在运行时做出这些决定。
在运行时检测Mono的标准方法是:
bool runningOnMono = Type.GetType ("Mono.Runtime") != null;
答案 1 :(得分:1)
很明显,有时某个平台上的代码与另一个平台上的代码不同,您可能希望在运行时或编译时执行此操作。有时它无法在运行时完成。
例如:
Mono被用作Xamarin的Ios,Android和Mac工具包的基础。虽然这些代码有很多共同的代码,但它们也有只出现在单个平台上的类。使用这些工具包进行开发时,您可以开发在平台之间无法交换的本机包。
一个简单的例子是文件名和路径。这些在每个平台上都不同。我可能有一点条件在每个平台上加载不同的字符串。有些平台有特定于案例的文件名,有些则没有。
如果有一些代码返回当前平台会很好 - 无论是UNIX,iOS,Mac,X86,X64,XBox等......