У меня есть этот код в функции Main () службы Windows:
if (!Environment.UserInteractive)
{
ServiceBase.Run(new Listener());
}
else
{
try
{
var listener = new Listener();
listener.StartListener();
Console.WriteLine("Press any key to stop...");
Console.ReadKey(true);
}
catch (Exception ex)
{
}
}
Это так, чтобы оно работало как консольное приложение, если я запускаю его в VS (2019, если это имеет значение).
Это конструктор Слушателя:
public Listener()
{
kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
Logger = kernel.Get<INLogLogger>();
InitializeComponent();
}
private INLogLogger Logger { get; }
Когда я запускаю его как консольное приложение, я могу пройти по нему, и он отлично получает Logger, но когда я использую сценарий PowerShell, чтобы запустить его в качестве службы Windows и подключиться к процессу, я перехожу через строку Logger = kernel.Get<INLogLogger>();
и это молча терпит неудачу. То, что я подразумеваю под молчаливым сбоем, - это то, что моя отладка VS просто останавливается без запроса или сообщения об ошибке.
Я вполне уверен, что правильно настроил привязку для моего INLogLogger, потому что это копирование и вставка из другой службы Windows, с которой у меня нет этой проблемы.
Чего мне не хватать? На что посмотреть?