事件构建前后发布以停止并重新启动Windows服务

won*_*nea 16 windows-services visual-studio-2010 pre-build-event

我一直在尝试使用构建事件来启动和停止在我的项目中构建的Windows服务.然而,对于前置和后置构建失败,错误级别为255.我已经尝试使用预构建来捕获它而没有运气.

预建

if "$(ConfigurationName)" == "Debug"
(
 net stop myService
 if errorlevel 2 
    if errorlevel 255 
        :exit

   :exit
)
Run Code Online (Sandbox Code Playgroud)

生成后

if "$(ConfigurationName)" == "Release"
(
   copy $(TargetDir) C:\Media\Bin\$(ProjectName)
   if errorlevel 1 BuildEventFailed

   :BuildEventFailed
   mkdir C:\Media\Bin\$(ProjectName)

   copy $(TargetDir) C:\Media\Bin\$(ProjectName)
)
else if "$(ConfigurationName)" == "Debug"
(
   net start myService
)
Run Code Online (Sandbox Code Playgroud)

SDM*_*SDM 22

Joel Varty的以下博客有一个我使用的解决方案: 使用Build Events重建Windows服务,而无需手动停止/启动它

唯一的问题是当你进行重建时.在预构建事件触发之前,Visual Studio会清除文件.然后当然失败因为服务仍在运行.但常规构建工作很棒.希望这可以帮助.

  • 我更喜欢在post-build中使用`stop,copy,start,exit`,因为服务路径可能不应该直接指向/ bin/Release文件夹.这还可以防止服务被停止,但如果构建因其他原因而失败,则永远不会重新启动. (4认同)
  • @Dan有正确的答案.这也可以让您轻松切换到不同的构建配置,分支等,而无需重新安装/重新发布服务.从SDM链接中的注释中,您还可以自动安装该服务,以便新开发人员可以正常工作. (2认同)

Luu*_*nen 1

尝试在预构建代码的第一行使用左括号