據我所知,Visual Studio Express沒有用於服務的項目模板。這並不意味着您無法使用VSE編寫Windows服務,只是您不會有模板來啓動。
要創建服務,您只需創建一個正常的控制檯應用程序。創建將負責實際服務實現的服務類。它會是這個樣子
using System.ServiceProcess;
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
}
那麼該服務的啓動代碼可以進入你的服務的Main
功能。
using System.ServiceProcess;
namespace WindowsService1
{
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}
這應該給你你的服務的基本框架。您需要的另一件事是添加服務的安裝程序,以便它可以作爲服務安裝。下面應該讓你開始,注意我已經注意到了這一點。
using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;
namespace WindowsService1
{
[RunInstaller(true)]
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller serviceProcessInstaller1;
private ServiceInstaller serviceInstaller1;
public ProjectInstaller()
{
this.serviceProcessInstaller1 = new ServiceProcessInstaller();
this.serviceInstaller1 = new ServiceInstaller();
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
this.serviceInstaller1.ServiceName = "Service1";
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
}
}
鑑於上述情況,您應該有足夠的搜索範圍或要求有關服務創建的更多細節。對於MSMQ監聽器,你可以用下面的MSDN文章爲出發點
http://msdn.microsoft.com/en-us/library/ms978425.aspx
偉大的示例代碼,讓我開始在Windows服務,謝謝。 – philfeyn 2010-10-18 04:28:38
有沒有其他方法可以安裝服務,即使是手動安裝?將代碼和密碼硬編碼到代碼中運行服務似乎對我來說是不好的做法。 – philfeyn 2010-10-19 02:23:50
@philfeyn,您可以設置ServiceProcessInstaller.Account來選擇帳戶的類型。如果它設置爲ServiceAccount.User並且用戶名/密碼設置爲空,則在安裝服務時將提示您輸入憑據。您可以使用.NET框架附帶的InstallUtil.exe手動安裝該服務。 – 2010-10-19 03:21:12