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