Хотя я не совсем уверен, как это работает конкретно со службами, вы можете установить произвольную цель отладки.
В панели отладки (в свойствах проекта) вы можете установить любой исполняемый файл или другую команду в качестве цели отладки. Процесс, созданный этой командой, будет иметь прикрепленный отладчик, независимо от того, откуда был взят исполняемый файл. Нет требований, чтобы цель была проектом C# или любым проектом Visual Studio. Это должно быть доступно как в Express, так и в Pro. Можно подключиться к более позднему процессу (если у вас есть программа запуска), но это, вероятно, выходит за рамки ваших текущих возможностей.
Затем вы устанавливаете точки останова в своем коде, как обычно, и когда код срабатывает (независимо от того, вызывает ли он ваш код или исполняемый файл хоста), точка останова будет активирована. В зависимости от того, сколько у вас информации о хосте, вы также можете эффективно отлаживать его; даже если у вас нет информации, вы сможете пройти сборку пошагово.
Единственное требование здесь состоит в том, чтобы цель загружала и запускала ваш код. В зависимости от контекста (плагин к программе, внедренная зависимость и т. д.) это может иметь разную сложность. Этот метод используется во многих местах, особенно в системах плагинов, где вы не можете отлаживать настоящий хост, но все же хотите сделать это со своим плагином.
Другой, немного более уродливый вариант, состоит в том, чтобы заставить хост сломаться и идентифицировать себя. Это полезно только для отладки, так как это очень разрушительно. Типичный метод — показать окно сообщения (модальное) с идентификатором процесса. Затем процесс будет приостановлен до тех пор, пока сообщение не будет отклонено, и можно будет подключить отладчик. С услугами это становится сложнее, хотя все еще есть способы опубликовать вашу информацию блокирующим образом.
person
ssube
schedule
27.06.2012