在我们的生成.xml我们删除系统使用的所有服务,重建它们,重新创建它们,然后运行一系列nunit测试,以确保它们能够很好地协同工作。
要删除服务,我们使用UninstallAssembly任务,如下所示:
<UninstallAssembly
AssemblyFiles='..\src\FolderName\ProjectName\bin\Debug\ProjectName.exe'
ContinueOnError='true'>
</UninstallAssembly>
C:\窗口\微软.NET\框架\v2.0.50727\InstallUtil.exe/卸载..\src\FolderName\ProjectName\bin\Debug\项目名称.exe
然后使用InstallAssembly任务重新安装服务:
<InstallAssembly
AssemblyFiles='..\src\FolderName\ProjectName\bin\Debug\ProjectName.exe'>
</InstallAssembly>
这通常很好,但有时会出现以下错误:
错误MSB6006:“InstallUtil.exe"
我看了一下,服务在那里,但不能启动/停止/等等。
sc delete servicename
我得到了错误
[SC]DeleteService失败1072:
已标记指定的服务
this note
编辑:
此问题似乎发生在上一次运行服务未能启动时。我们得到错误的地方:
ServiceName服务正在启动。。。
5) :无法启动服务ServiceName
在计算机“COMPUTERNAME”上。
因此,它看起来像是在启动服务失败之后,我们无法删除服务,直到重新启动之后。我相信在这个实例中,服务没有启动的原因是因为主服务类的构造函数抛出了
FileNotFoundException
. 类派生自
ServiceBase
我仍然想知道如何删除服务而不必重新启动。