__MonoCS__ Mono、Roslyn、Dnvm 中的等价常量

__MonoCS__ constant equivalent in Mono, Roslyn, Dnvm

我的 C# 项目中有导入,但在 Mono 中效果不佳(即使在编译时!)。我想在 Mono 中排除一些代码(在编译时)。我以前用过类似的东西:

#if !__MonoCS__
...
#endif

但是这个常量在 Mono 4.0.2 中没有定义,OSX。可能只在 DNVM 或 Roslyn 上。

如果我在文件开头手动定义 __MonoCS__ 常量。一切正常。

这个平台上有__MonoCS__等价物吗?


如果这事,我的项目是asp.net基于vnext的webapi。我 运行 使用以下命令的项目:

/Users/buraktamturk/.dnx/runtimes/dnx-mono.1.0.0-beta4/bin/dnx . kestrel

很多具体信息,"why i need it in compile time?"的回答。只有注释掉下面的代码才能运行项目

if(false) { // yes, false!
  var certificate = new X509Certificate2(config.Get("google:pkeyloc"), config.Get("google:pkeypw"), X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

   credential = new ServiceAccountCredential(
              new ServiceAccountCredential.Initializer(config.Get("google:serviceacc"))
              {
                  Scopes = new[] { StorageService.Scope.DevstorageFullControl }
              }.FromCertificate(certificate)
    );
}

将该代码移至其他函数。

只要您不在没有该 DLL 的平台上调用该函数,一切都会好起来的。