在Visual Studio 2008中调试Windows服务程序的最佳方法是什么?

Luk*_*101 5 c# asp.net-mvc logparser asp.net-3.5

我在Windows服务中使用Microsoft Log Parser.该程序在常规网页中工作,但是当我将代码放在Windows服务中时它不起作用.我把Breakponts放在windows服务中但是当我运行代码时,程序不会在断点处停止.因此,通过我的故障排除,我已将问题缩小到Log Parser软件和Linq.因此Linq或日志解析器软件都会产生问题.你们有什么想法吗?

Jus*_* R. 5

您需要将调试器直接与Windows服务连接.这可能对您有所帮助:http://msdn.microsoft.com/en-us/library/7a50syb3%28VS.80%29.aspx.


Wil*_*l P 2

我过去已经通过多种方式完成了此操作,具体取决于程序的运行方式。我认为最简单的方法是在 Debugger.Launch() 周围使用 if #DEBUG 预处理器指令来完成,这样当您构建优化的项目时, Debugger.Launch() 调用将不会被编译到程序集中。

我们完成此任务的一种方法是使用 System.Windows.Forms.MessageBox.Show("attach"),它允许我们在显示“attach”对话框时手动附加到调试器。

我不喜欢的最后一种方法是根据传入的命令行参数更改服务的行为。基本上选择不在特定参数被触发时使用 ServiceBase.Run 启动服务,而是调用封装该行为的类/服务的主要功能。