34

我需要一个条件编译开关,它知道我是为单声道还是 MS .NET 运行时进行编译。我怎样才能做到这一点?

4

2 回答 2

59

Mono 编译器定义__MonoCS__

但是,但是,但是,Mono 的全部意义在于,您可以使用 VS 构建的程序集并在 Mono 上运行它,反之亦然。

在我看来,如果您需要 Mono 与 MS.NET 的区别,那么您需要在运行时做出这些决定。

在运行时检测 Mono 的标准方法是:

bool runningOnMono = Type.GetType ("Mono.Runtime") != null;
于 2008-11-30T17:04:37.317 回答
1

很明显,有时一个平台上的代码与另一个平台上的代码不同,您可能希望在运行时或编译时执行此操作。有时它不能在运行时完成。

例如:

Mono 用作 Xamarin 的 Ios、Android 和 Mac 工具包的基础。虽然它们有很多通用代码,但它们也有只出现在单个平台上的类。使用这些工具包进行开发时,您会开发无法在平台之间交换的原生包。

一个简单的例子是文件名和路径。这些在每个平台上都不同。我可能只是有一点条件可以在每个平台上以不同的方式加载字符串。有些平台有特定于大小写的文件名,有些则没有。

如果有一点代码可以返回当前平台,那就太好了——无论是 UNIX、iOS、Mac、X86、X64、XBox 等......

于 2012-06-01T09:39:20.053 回答