Я собираюсь описать настройку, которую мы используем для управления и тестирования наших проектов службы Windows. Хотя это не отвечает на вопрос «совместного использования кода без DLL» (ответ Unmesh об этом позаботится), я думаю, что OP, вероятно, не понимает, насколько легко это с DLL. В любом случае, я надеюсь, что это поможет кому-то .
Создать решение, LDAPSync. Создайте три проекта в этом решении:
- LDAPSyncLib
- LDAPSyncSvc
- LDAPSyncTest
LDAPSyncLib - это проект DLL, который содержит всю вашу бизнес-логику и основные функциональные возможности.
LDAPSyncSvc - это проект службы Windows, содержащий два класса, класс контроллера служб, который наследуется от ServiceBase , и класс Installer для вашей службы. Этот проект имеет "ссылку на проект" на LDAPSyncLib.
LDAPSyncTest - это либо приложение с графическим интерфейсом (WinForms, WCF и т. Д.), Либо консольное приложение, в зависимости от ваших потребностей. Этот проект также имеет «ссылку на проект» на LDAPSyncLib. Его единственная цель - предоставить некоторый интерфейс, который позволит вам легко выполнять необходимые вызовы в вашей бизнес-логике для целей тестирования. В Visual Studio установите это как «Проект запуска».
Теперь, когда вы запустите отладку через Visual Studio, вы получите небольшой графический интерфейс или командное окно, которое вы можете использовать для ручного выполнения тестовых вызовов. Когда вы устанавливаете его как службу Windows, класс контроллера проекта LDAPSyncSvc вступает во владение и обрабатывает все необходимые запросы службы (запуск, остановка, пауза и т. Д.)
У нас есть около 30 собственных проектов Windows Service, которыми мы непрерывно руководим, разрабатываем и тестируем уже более десяти лет, и этот рабочий процесс оказался неоценимым в быстром обнаружении и исправлении ошибок при их возникновении. Желаем удачи в вашем проекте, и я надеюсь, что это поможет некоторым будущим пользователям Google.