无法debuggingWindows服务

我正在寻find几个职位,以find如何debuggingWindows服务。 我发现,如果我把下面的代码放在我的OnStart()函数中:

 Debugger.Launch(); 

会做的伎俩,但通过CMD(NET START)启动我的Windows服务后,它只是启动和运行正常,但debugging器永远不会启动,即使VS打开加载的Windows服务。

我觉得我错过了什么,是什么?

我正在通过修改服务的Main方法来做到这一点,它在Program.cs中,默认情况下它是这样的:

 ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceMain() }; ServiceBase.Run(ServicesToRun); 

然后你可以使用Environment.UserInteractive来查找你的服务是否像服务或调试器一样启动:

 if (!Environment.UserInteractive) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceMain() }; ServiceBase.Run(ServicesToRun); } else { ServiceMain sm = new ServiceMain(); Console.Write("Service debug run"); sm.StartForDebugging(); } 

当然,你必须在你的服务中添加StartForDebugging方法,并且像在OnStart方法中一样做,或者你可以直接调用OnStart方法直接公开。

你可以尝试在OnStart方法中包含这个:

 while(!System.Diagnostics.Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } 

然后,从Visual Studio菜单中手动附加到进程: 调试 – >附加到进程

另外,请注意,在Debugger.Launch方法主题的备注部分中声明:

如果调试器已经连接,则不会发生任何事情。