我需要在PC上为Mac和.NET双重编译Mono的类库。我想做一些小改动,但我希望使用编译器指令拆分代码。有什么建议吗?
答案 0 :(得分:44)
虽然运行时检查可能更可取,但使用Mono编译器时,预定义的__MonoCS__
常量很有用,例如:
#if __MonoCS__
// Code for Mono C# compiler.
#else
// Code for Microsoft C# compiler.
#endif
答案 1 :(得分:19)
首选方法是使用运行时检测,因为这允许在任一平台上使用相同的程序集:
using System;
class Program {
static void Main ()
{
Type t = Type.GetType ("Mono.Runtime");
if (t != null)
Console.WriteLine ("You are running with the Mono VM");
else
Console.WriteLine ("You are running something else");
}
}
答案 2 :(得分:14)
你当然可以使用
#if MONO
然后用
编译gmcs -define:MONO ...
(当然,或者把它放在你的Mono构建配置中。这实际上取决于你如何构建你的库。)
......除此之外你还在寻找什么?