如何检测我在mono-service2下运行?(在C#/.NET 3.5中,在ubuntu 11上运行mono 2.6.7)
Type.GetType("Mono.Runtime")
告诉我在mono-service2下运行,所以这部分没问题。但Environment.UserInteractive
在mono-service下似乎总是错误的,所以我很难弄清楚我是否真的在mono-services2下运行-没有控制台/终端。
Environment.UserInteractive
是合适的解决方案,但不幸的是,它目前尚未在Mono中实现。我可能有一天会看看它,并升级这个答案;)
然而,为了检测,你可能可以使用破解的解决方案:m
参数中给mono-service
的名称将成为该服务的应用程序域的友好名称(至少根据mono-service
的当前源代码)。因此,当使用此参数运行时,您应该能够测试:
AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"
如果这是真的,那么您的应用程序显然是使用mono服务运行的(带有给定的参数)。将应用程序域名的值打印到文件中,看看它是否真的有效(对我来说确实有效);)我不知道它是否真的能解决你的问题。
if (Environment.OSVersion.Platform.Equals(PlatformID.Unix))
{
}