Vag*_*lov 4 mono f# preprocessor compilation
我试图根据编译时环境使一些F#代码有条件,并且找不到F#编译器可识别的任何特定于操作系统的定义.#if MONO不起作用.有没有办法在F#的编译时检测操作系统?
我认为没有任何开箱即用的方法.您需要定义自己的符号,例如在构建Mono版本时MONO调用编译器--define:MONO.
也就是说,我会对此有点小心 - 在F#和.NET中没有明确的"为Mono编译"的概念.当您编译的F#代码,你总会得到dll或者exe你可以在任何地方运行,并没有什么可以阻止您复制一个生成输出,而在另一个环境中运行它.
有一种标准方法可以使用以下方法检测程序在运行时的运行位置:
Type.GetType("Mono.Runtime") != null
Run Code Online (Sandbox Code Playgroud)
您可能有充分的理由想要两个单独的构建,但是可能值得考虑是否可以在运行时做出适当的选择(如果您依赖某些特定于Windows的库(如WinForms图表),这可能不起作用).
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |