我正在尝试使用 Visual Studio 2010 → 调试 → 附加到进程 命令连接到一个 Windows 服务。当我滚动查看进程列表时,我的 Windows 服务是灰色的,附加按钮也是灰色的。
我尝试将服务账户更改为本地服务、我的账户等,但它仍然是灰色的。有没有办法解决这个问题?
我正在尝试使用 Visual Studio 2010 → 调试 → 附加到进程 命令连接到一个 Windows 服务。当我滚动查看进程列表时,我的 Windows 服务是灰色的,附加按钮也是灰色的。
我尝试将服务账户更改为本地服务、我的账户等,但它仍然是灰色的。有没有办法解决这个问题?
我通常也遇到同样的问题,我的解决方法是在配置中添加一个布尔值以触发调试启动。您可以通过调用以下方法启动一个附加到Windows服务进程的Visual Studio调试器实例:
System.Diagnostics.Debugger.Launch();
很好的一点是你可以在代码中任何你希望的地方调用它。
在Visual Studio 2010中,在“附加到进程”对话框中,勾选底部两个复选框,分别为“显示所有用户的进程”和“显示所有会话中的进程”。
这样做后,我发现我的进程出现了两次,一个是以系统身份运行的进程,另一个则是在我本地Windows登录下运行的。我不确定为什么会这样(如果有任何意见,请告知!),但我能够附加到显示出来的未灰掉的那个进程,并通过这种方式逐步执行我的代码。
第二个进程是如Ozz在评论中指出的servicename.vshost.exe进程。
如果您仍然看不到它,请确保您的服务仍在运行。有时候您可能会遇到启动并自动停止的失败服务,因此它不会在“附加到进程”选项中显示出来。
请确保您以管理员身份运行Visual Studio。它需要管理员权限才能附加到正在运行的服务。
我通过将设置生成方式从RELEASE更改为DEBUG来解决了我的问题。然后,我像往常一样安装了服务并进行了附加。
您可能没有附加到服务的权限。您在桌面上是否具有管理员特权?许多公司默认情况下不允许此操作,据说是为了帮助保护其环境。
使用菜单 工具 → 附加到进程。只需在左下角勾选显示所有用户的进程。按进程排序,尝试查找您的Windows服务。