将Windows服务添加到GUI-Windows应用程序项目

时间:2014-07-31 05:22:32

标签: c# windows-services

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

我怎样才能在C#中实现这一点 - Visual Studio 2010?

1 个答案:

答案 0 :(得分:2)

正如@nvoigt所说,您只需在解决方案中添加另一个项目。如果您在“解决方案资源管理器”窗口中右键单击解决方案,请选择“添加”|“新建项目...”菜单选项。在出现的对话框中,选择Windows服务项目类型,为其命名,然后按确定。请注意,此步骤假定您拥有一个付费版本的Visual Studio 2010.我的回忆是Windows Service项目类型未随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。