我正在研究包含Windows服務和與該服務交互的WinForms客戶端的解決方案。如何檢測項目版本中的Windows服務
在我的預生成和生成後事件中,我有一些net start
和net stop
命令來啓動和停止服務,但有時會導致問題(文件未找到,服務已停止等等)。 )。
有沒有一種方法來測試服務將發行net start?
運行或安裝之前,我想將這個測試在.cmd文件,併爲預生成事件運行項目。
我正在研究包含Windows服務和與該服務交互的WinForms客戶端的解決方案。如何檢測項目版本中的Windows服務
在我的預生成和生成後事件中,我有一些net start
和net stop
命令來啓動和停止服務,但有時會導致問題(文件未找到,服務已停止等等)。 )。
有沒有一種方法來測試服務將發行net start?
運行或安裝之前,我想將這個測試在.cmd文件,併爲預生成事件運行項目。
您實際上不需要每次都安裝,啓動和停止服務。相反,考慮在服務可執行文件中添加一個命令行密鑰,以便在指定它時作爲服務運行(即,執行通常的ServiceBase.Run()),當該密鑰不存在時,它將作爲常規控制檯運行應用。您將獲得能夠將記錄器輸出直接轉儲到控制檯的額外好處,從而使調試變得更容易。
if(args.GetLength(0) == 1 && args[0].ToUpper() == "/SERVICE")
{
ServiceBase[] services = new ServiceBase[] { new MyService() };
ServiceBase.Run(services);
} // if
else
{
InitAndStartWhateverIsNecessaryToRunServer();
Console.ReadLine();
} // else
將其粘貼到vb腳本文件中並添加到構建前和構建事件中。
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
("SELECT * FROM Win32_Service WHERE Name = 'someService'")
Set objService = colRunningServices(0)
If objService.State <> "Running" And objService.State <> "Starting" Then
objService.StartService()
End If