Как определить, что я работаю в моно-сервисе? - PullRequest
7 голосов
/ 30 января 2012

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

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

Ответы [ 2 ]

5 голосов
/ 30 января 2012

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

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

AppDomain.CurrentDomain.FriendlyName == "NameGivenToMParameter"

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

0 голосов
/ 06 февраля 2017
if (Environment.OSVersion.Platform.Equals(PlatformID.Unix)) 
{
}
...