Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测I';我在mono服务中运行?_C#_Linux_Mono_Mono Service - Fatal编程技术网

C# 如何检测I';我在mono服务中运行?

C# 如何检测I';我在mono服务中运行?,c#,linux,mono,mono-service,C#,Linux,Mono,Mono Service,如何检测到我正在mono-service2下运行?(在C#/.NET3.5中,在Ubuntu11上运行Mono2.6.7) Type.GetType(“Mono.Runtime”)告诉我我正在Mono中运行,所以这部分是正常的。但是Environment.UserInteractive在mono下似乎总是错误的,所以我很难弄清楚我是否真的在mono-service2下运行-没有控制台/终端。环境。UserInteractive是正确的解决方案,但不幸的是,它目前没有在mono中实现。有一天我可能

如何检测到我正在mono-service2下运行?(在C#/.NET3.5中,在Ubuntu11上运行Mono2.6.7)


Type.GetType(“Mono.Runtime”)
告诉我我正在Mono中运行,所以这部分是正常的。但是
Environment.UserInteractive在mono下似乎总是错误的,所以我很难弄清楚我是否真的在mono-service2下运行-没有控制台/终端。

环境。UserInteractive
是正确的解决方案,但不幸的是,它目前没有在mono中实现。有一天我可能会看一看,然后升级这个答案;)

然而,仅仅为了检测,您可能会在这一点上使用黑客解决方案:在
m
参数中指定给
mono服务的名称将成为该服务的应用程序域的友好名称(至少根据
mono服务的定义)。因此,当使用此参数运行时,您应该能够测试:

AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"

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

Tnx。“FriendlyName”黑客很好用。但是这并不理想(所以我把这个问题留了一段时间没有回答:)。混淆FriendlyName会影响我的日志记录,最好不要记住mono服务的-m选项。但是嘿;无论如何,谢谢你。我会想办法的。现在我至少有了一个解决方案。我找到了一种方法来确定linux上mono下是否有可用的控制台/终端:“mono.Unix.Native.Syscall.isatty(0)”。这在windows上不起作用,但当然有Environment.UserInteractive。@BaBu:是的,好主意。当v4.5可用时,这也将非常有用:
if (Environment.OSVersion.Platform.Equals(PlatformID.Unix)) 
{
}