我正在尝试安装我在Windows XP上的Visual Studio 2012中创建的Windows服务。我怎样才能做到这一点?
我尝试过本教程,但实施它的运气很少。 http://www.ehow.com/how_6046576_install-service-windows-xp.html
我的代码有什么问题吗?
Public Class MyFirstService
Dim WithEvents timer1 As New System.Timers.Timer
Protected Overrides Sub OnStart(ByVal args() As String)
timer1.Interval = 10000
timer1.Start()
WriteLog(Me.ServiceName & " has started ...")
End Sub
Protected Overrides Sub OnStop()
WriteLog(Me.ServiceName & " has stopped ...")
End Sub
Private Sub timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles timer1.Elapsed
WriteLog(Me.ServiceName & " is running ...")
End Sub
Private Sub WriteLog(ByVal strMessage As String)
Dim strPath As String, file As System.IO.StreamWriter
strPath = AppDomain.CurrentDomain.BaseDirectory & "\MyService.log"
file = New System.IO.StreamWriter(strPath, True)
file.WriteLine("Test")
file.Close()
End Sub
End Class
当我点击我的.exe时,我收到此错误消息MyFirstService.exe不是有效的Win32应用程序。这是我第一次尝试使用窗口服务应用程序。
答案 0 :(得分:0)
我最近开发了几种Windows服务,并且希望能够轻松地调试它们,而无需在每次构建服务时都在命令提示符中输入大量内容。
为此,我首先将以下内容添加到我的" Build Events"在我的服务项目的项目属性中:
生成后:
call "$(DevEnvDir)..\Tools\vsvars32.bat"
installutil "$(TargetPath)"
net start "$(SolutionName)"
使用上述内容成功构建后,请确保将以下内容添加到预构建中:
net stop "$(SolutionName)"
call "$(DevEnvDir)..\Tools\vsvars32.bat"
installutil /u "$(TargetPath)"
这将使您的项目在构建时自动停止,卸载,重新安装和启动。另外,请确保运行构建后事件On successful build
。
注意:这确实假设您的服务名称与您的解决方案名称相同。如果它们不同,您需要将$(SolutionName)
更改为您的服务名称。