Инструменты для тестирования недавно созданных служб Windows? - PullRequest
1 голос
/ 25 ноября 2010

есть ли инструмент или метод для проверки моей службы Windows? он отлично работает с Visual Studio 2010.

Я использую Advanced Installed для создания установочного пакета (MSI), но он не запускается!

ура

Ответы [ 4 ]

4 голосов
/ 25 ноября 2010

См. этот ответ от lubos hasko , чтобы упростить отладку и облегчить установку сервисов (что я и сделал с большим успехом).Также рекомендуется адаптировать log4net и вести его на консоли в интерактивном режиме.

class TheService : ServiceBase
{
   static void Main(string[] args)
        {
            if (!Environment.UserInteractive)
            {
                Run(new TheService());
            }
            else
            {
                // If interactive, start up as a console app for easy debugging and/or installing/uninstalling the service
                switch (string.Concat(args))
                {
                    case "/i":
                        ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
                        break;
                    case "/u":
                        ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
                        break;
                    default:
                        Console.WriteLine("Running service in console debug mode (use /i or /u to install or uninstall the service)");
                        var service = new TheService();
                        service.OnStart(null);
                        Thread.Sleep(Timeout.Infinite);
                        break;
                }
            }
        }
   }
1 голос
/ 25 ноября 2010

Я предполагаю, что вы используете класс установщика для создания и установки службы (производной от System.Configuration.Install.Installer)? Если это так, поместите эту строку кода в ctr установщика или переопределите OnBeforeInstall. Затем вы можете подключить отладчик и отладить процесс установки:

System.Diagnostics.Debugger.Break()
1 голос
/ 25 ноября 2010

Вы не можете напрямую запустить службу Windows: вам необходимо установить службу и запустить ее.

Поскольку установка службы обычно неудобна при разработке, стоит изменить код начальной загрузки для вашей службы, чтобыопределить, выполняется ли он как служба или в интерактивном режиме, и, в последнем случае, показать форму Windows.

ServiceBase service = ...;

if (Environment.UserInteractive)
{
    // run as application
    Application.EnableVisualStyles();
    Application.Run(new SomeForm()); // the form should call OnStart on the service
}
else
{
    // run as service
    ServiceBase.Run(service);
}
1 голос
/ 25 ноября 2010

Есть ли у вас вход в приложение?Вероятно, это будет первое место, чтобы проверить способ исправить это.Довольно сложно иметь «инструмент» для тестирования «некоторой службы Windows».Если у вас есть более подробная информация о регистрации, и вы не можете выяснить, в чем дело, сообщите об этом, чтобы мы могли помочь.

...