【问题标题】:Adding windows service to a GUI-Windows application project将 Windows 服务添加到 GUI-Windows 应用程序项目
【发布时间】:2014-07-31 05:22:31
【问题描述】:

我有一个基于 GUI 的 Windows 应用程序,它是一个 .exe 应用程序(TestServer.exe)应用程序。现在我需要在这个项目解决方案中添加一个 Windows 服务。 因此,该解决方案将构建两个可执行文件。第一个是它当前正在使用 UserApplication 构建的那个; MyTestServer.exe 第二个是新的 Windows 服务; MyTestservice.exe.
两者都将共享 MyTestServerLibrary 和我们的第 3 方 dll。

我如何在 C# - Visual Studio 2010 中做到这一点?

【问题讨论】:

  • 您在解决方案上下文菜单中单击“添加项目”。

标签: c# windows-services


【解决方案1】:

正如@nvoigt 所说,您只需将另一个项目添加到您的解决方案中。如果您要在解决方案资源管理器窗口中右键单击您的解决方案,请选择添加|新项目...菜单选项。在出现的对话框中,选择 Windows 服务项目类型,为其命名,然后按 OK。请注意,此步骤假定您拥有 Visual Studio 2010 的付费版本之一。我记得 Windows 服务项目类型未随 Express 版本提供。

从那里,您只需像构建任何其他项目一样构建您的 Windows 服务项目。如果您以前从未这样做过,我有一组关于如何执行此操作的说明here。这些说明针对的是 Visual Studio 2008(我真的需要更新它...),但它们实际上与 Visual Studio 2010 相同。

此时,当您构建项目时,您将获得 TestServer.exe、属于您的解决方案的任何其他 C# 程序集以及新添加的 Windows 服务可执行文件。默认情况下,直接从 Visual Studio 调试器运行 Windows 服务将不起作用,原因有两个。首先,您的解决方案可能已将 TestServer.exe 标记为启动项目,这意味着当您按 F5 开始调试时,将运行 TestServer.exe。但即使您将启动项目更改为新的 Windows 服务,它仍然无法工作,因为服务不会像普通 Windows 应用程序那样启动。为了解决这个问题,您可以查看here 的说明,了解如何让您的 Windows 服务以“交互”模式运行,这样您就可以像调试任何其他应用程序一样对其进行调试。不过,就我的目的而言,我更喜欢在我的 Windows 服务实际作为 Windows 服务运行时对其进行调试。为此,只需在 Windows 服务的构造函数中调用 System.Diagnostics.Debugger.Launch()。如果您是系统管理员,这将使您有机会在从服务控制台启动服务时跳转到调试会话。

这直接导致安装服务的点。要实际运行 Windows 服务,必须在系统上安装它。对于基于 .NET 的 Windows 服务,您可以使用 Microsoft 提供的 InstallUtil.exe 来执行此操作。如果从“开始”菜单打开 Visual Studio 命令提示符,则它在目录路径中可用。我更喜欢 Marc Gravell 建议让 Windows 服务自行安装/卸载的解决方案。我有一套关于如何做到这一点的说明here

这应该让你开始。关于 SO 上的 Windows 服务有很多很好的答案,所以如果你遇到困难,一定要在这个网站上搜索它。 HTH。

【讨论】:

  • 非常感谢您的回复。我已按照上述说明进行操作。继续上面的查询,我想知道如何从新创建的 winodows 服务控制我的 TestServer.exe 应用程序?
  • 我很乐意回答您的问题,但由于空间太小,所以不能在评论中回答。提出问题,然后在此处放置一个链接,以便我找到它。
  • 我已经在这个链接stackoverflow.com/questions/25131036/…提出了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 2023-03-15
  • 2011-10-19
相关资源
最近更新 更多