SYSK 197: Smart Start and Stop Service in VS.NET Build
If you have a windows service project as part of your solution, you’re quite familiar with the issues it presents -- if the service is running and you’re recompiling either the service project itself, or any assemblies loaded by the service, you’ll get a build error. The script below, courtesy of Scott Jennings, is a way to stop and start service, if it’s installed and is running/stopped correspondingly. All that remains to do it to add the script invocation code to pre-build and post-build event command lines in Visual Studio.
' Usage:
' start /w wscript "<path>\ServiceHelper.vbs" <start|stop> <servicename>
' Example:
' start /w wscript "C:\Projects\XYZ\ServiceHelper.vbs" start myservice
Dim WMIService
Dim Services
Dim Service
Dim action
Dim result
If Wscript.Arguments.Count <> 2 Then
Wscript.Echo "Usage: ServiceHelper.vbs start|stop ServiceName"
Wscript.Quit 1
End If
Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set Services = WMIService.ExecQuery("Select * from Win32_Service where Name = '" + Wscript.Arguments(1) + "'")
If Services.Count > 1 Then
Wscript.Echo "More than one matching service"
Wscript.Quit 1
ElseIf Services.Count = 1 Then
action = Wscript.Arguments(0)
For Each Service In Services
If action = "start" AND Service.State <> "Running" Then
result = Service.StartService()
ElseIf action = "stop" AND Service.State <> "Stopped" Then
result = Service.StopService()
End If
Next
Wscript.Quit(result)
Else
Wscript.Echo "No such service found"
Wscript.Quit 1
End If
Special thanks to Scott Jennings who created this solution!