Как определить, что я работаю в моно-сервисе?

Как я могу определить, что я работаю под mono-service2? (в C#/.NET 3.5, запуск моно 2.6.7 в Ubuntu 11)

Type.GetType("Mono.Runtime") говорит мне, что я бегу в моно, так что эта часть в порядке. Но Environment.UserInteractive Кажется, всегда ложно в моно, поэтому я пытаюсь выяснить, действительно ли я работаю под моно-сервисом 2 - без консоли / терминала.

2 ответа

Решение

Environment.UserInteractive является правильным решением, но, к сожалению, в настоящее время оно не реализовано в Mono. Я могу когда-нибудь взглянуть на это и обновить этот ответ;)

Однако, просто чтобы обнаружить, вы можете использовать хакерское решение вокруг этого: имя, данное mono-service в m параметр станет понятным именем домена приложения этой службы (по крайней мере, в соответствии с текущим исходным кодом mono-service). Таким образом, при запуске с этим параметром вы сможете проверить:

AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"

Если это правда, то ваше приложение, очевидно, запускается с моно-сервисом (с заданным параметром). Выведите значение имени домена приложения в файл, чтобы увидеть, действительно ли оно работает (оно работает для меня);) Я не знаю, действительно ли это решает вашу проблему.

if (Environment.OSVersion.Platform.Equals(PlatformID.Unix)) 
{
}
Другие вопросы по тегам