如何检测我是否在单一服务?

我怎么能检测到我在mono-service2下运行? (在C#/ .NET 3.5中,在Ubuntu 11上运行mono 2.6.7)

Type.GetType("Mono.Runtime")告诉我,我在声道运行,所以这部分是好的。 但是Environment.UserInteractive在单声道下总是是假的,所以我很难弄清楚我是否在mono-service2下运行 – 没有控制台/terminal。

Solutions Collecting From Web of "如何检测我是否在单一服务?"

Environment.UserInteractive是适当的解决方案,但不幸的是,它目前不在Mono中实现。 我可能会看看它有一天,并升级这个答案;)

然而,只是为了检测,你可能会使用hacky解决方案:在m参数中的mono-service的名称将成为该服务的应用程序域的友好名称(至少根据当前 mono-service 源代码 )。 所以,当运行这个参数时,你应该能够测试:

 AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter" 

如果这是真的,那么你的应用程序显然是运行单一服务(给定的参数)。 打印应用程序域名的值到文件,看看它是否真的工作(这对我来说);)我不知道它是否真的解决了你的问题。

 if (Environment.OSVersion.Platform.Equals(PlatformID.Unix)) { }