Как запустить и протестировать службы Windows в VS - PullRequest
2 голосов
/ 01 ноября 2011

Я создал службу Windows в VS: Файл-> Новый проект-> C # -> Службы Windows Но я не знаю, как его запустить и протестировать. В.С. говорит, что для его запуска мне нужно установить службы Windows. Но я просто хочу протестировать его и не хочу его устанавливать. Может кто-нибудь помочь мне ???

Ответы [ 5 ]

3 голосов
/ 01 ноября 2011

Чтобы отладить службу Windows, добавьте в свой Main() следующее:

if (!Environment.UserInteractive) {
    // We are not in debug mode, startup as service

    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] { new MyServer() };
    ServiceBase.Run(ServicesToRun);
} else {
    // We are in debug mode, startup as application

    MyServer service = new MyServer();
    service.StartService();
    System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
}

И следующий метод в своем классе MyServer:

public void StartService() {
    this.OnStart(new string[0]);
}

Теперь нажмите F5 для отладки, как любое winform или консольное приложение.

1 голос
/ 01 ноября 2011

При создании службы Windows я обычно помещаю все функции в отдельную библиотеку классов ... для тестирования я создаю "обычное приложение", которое использует библиотеку классов ...

ПОСЛЕ функциональностипроверено, и ошибки устранены. Я делаю сборку / установку Службы Windows ... могут быть проблемы, характерные для Службы Windows, такие как разрешения и т. д. - к ним необходимо обращаться соответствующим образом (некоторые журналы обычно очень полезны).

Отладка службы Windows с помощью VS немного отличается от отладки приложения - подробности см. http://msdn.microsoft.com/en-us/library/7a50syb3.aspx

0 голосов
/ 01 ноября 2011

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

Для этого в VS сделать следующее:

  1. В меню «Отладка» выбрать «Присоединить к процессу…»1008 *
  2. В нижней части окна выберите Показать процессы во всех сеансах.
  3. Щелкните левой кнопкой мыши скомпилированный EXE-файл, который будет запущен в качестве службы Windows в списке.Нажмите Прикрепить.

Результат: вы можете устанавливать точки останова в местах своих функций и отлаживать выполнение службы.

0 голосов
/ 01 ноября 2011

вы должны использовать командную строку Visual Studio со следующей командой:

installutil "путь к exe"

и переход к службам (start-> run-> services.msc) вы найдете услугу.нажмите на старт, и все готово.

PS: для отладки вашего сервиса в vs: tools-> attach to process и найдите ваш сервис в списке)

0 голосов
/ 01 ноября 2011

Служба Windows на самом деле не является обычным исполняемым файлом, она строится как exe , но ее необходимо установить и запустить с помощью значка служб на панели управления.

После того, как вы установили и запустили ееВы можете использовать меню Visual Studio Debug , Присоединить к процессу и присоединить к сервису для его отладки, а не самый простой и быстрый способ отладки, потому что если вам нужно что-то изменить, вам нужно собрать его заново и установить.Снова запустите и снова присоедините.

Обычно хорошим способом является разделение и изоляция логики службы в библиотеке классов (возможно, бизнес-логики службы), которую можно использовать также, скажем, в консольном приложении..

На этом этапе вы создаете тестовое консольное приложение, которое вызывает некоторые методы и ведет себя как служба из метода Main, и вы тестируете и отлаживаете этот метод.

Как только все получитсябыли проверены и проверены, и вы удовлетворены результатами, вы копируете код, который вы положили вMain метод приложения тестовой консоли в классе Service, возможно, в методе OnStart или аналогичном, подробности зависят от вашего конкретного дизайна.

мы делаем это также для отладки и тестирования служб WCF, которые размещеныв тестовом консольном приложении во время разработки и в службе Windows в производстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...