在开发Windows服务时,经常需要经历一系列复杂的步骤,从创建项目到部署。本文将指导如何使用Visual Studio一步步完成这些任务。
首先,需要在Visual Studio中创建一个新的Windows服务项目。创建完成后,可以切换到代码视图开始编写代码。
在示例中,将编写一个每5秒向事件日志写入条目的服务,以确保服务按预期运行。以下是可以复制到项目中的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
namespace Demo_Windows_Service
{
public partial class Service1 : ServiceBase
{
Timer myTimer = new Timer();
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// Starting
// Handle Elapsed Event
myTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
// Set Interval to 5 Seconds
myTimer.Interval = 5000;
// Enable the Timer
myTimer.Enabled = true;
}
protected override void OnStop()
{
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
myTimer.Enabled = false;
// Perform Processing Here
DoSomething();
myTimer.Enabled = true;
}
private void DoSomething()
{
string sSource = "Demo Windows Service";
string sLog = "Log Something : " + DateTime.Now.ToString();
string sEvent = "Event Fired";
if (!EventLog.SourceExists(sSource))
EventLog.CreateEventSource(sSource, sLog);
EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Information, 100);
}
}
}
完成代码编写后,需要为服务添加一个安装程序。这将由安装项目调用。在Service1.cs的[Design]视图中,右键点击空白区域,然后选择“添加安装程序”。
完成后,将有两个对象需要配置,分别是serviceProcessInstaller1和服务installer1。
此部分定义服务将如何运行。可以在服务属性的登录选项卡中看到这些设置。可以选择服务以用户、LocalSystem、NetworkService或LocalService身份运行。
如果不清楚它们之间的区别,请参考以下描述:
此部分定义服务的行为,它还将包含正在设置的服务的描述和名称。可以在服务属性的常规选项卡中看到这些设置。
现在已经完成了安装程序的配置。接下来,需要添加一个新的安装项目到解决方案中。
选择“安装项目”在“其他项目类型”下。选择后,将被引导到文件系统编辑器;如果没有发生,请右键点击项目,然后选择“视图”->“文件系统”。
在文件系统属性中,选择应用程序文件夹,然后右键点击它以添加一个“项目输出”。这是定义项目输出的地方,可以是可执行文件、类库,甚至是第三方DLL。在例子中,它是一个类库。
只需选择服务项目作为主要输出,然后点击确定。
现在它将显示所有输出以及Windows服务项目上的依赖项(如果有的话)。
接下来选择自定义操作;这定义了在安装、提交、回滚和卸载时复制的内容。
通过转到“应用程序文件夹”,选择在文件系统属性中定义的项目。
然后选择服务的主要输出:
现在它将显示它们现在已配置为安装、提交、回滚和卸载。
最后,可以放置安装程序的描述、作者、制造商、安装程序行为等。这是在“添加或删除程序”中显示的内容。
现在构建解决方案,然后构建安装项目。完成后,转到安装项目文件夹,并将安装程序复制到想要安装Windows服务的位置。