我一直在尝试使用构建事件来启动和停止在我的项目中构建的Windows服务。然而对于前期和前期post版本失败,错误级别为255.我尝试使用预编译来捕获它,但没有运气。
预生成
if "$(ConfigurationName)" == "Debug"
(
net stop myService
if errorlevel 2
if errorlevel 255
:exit
:exit
)
生成后
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
)
答案 0 :(得分:22)
Joel Varty的以下博客有一个我使用的解决方案: Use Build Events to rebuild a Windows Service without having to manually stop/start it
唯一的问题是当你进行重建时。在预构建事件触发之前,Visual Studio会清除文件。然后当然失败因为服务仍在运行。但常规构建工作很棒。希望这可以帮助。
答案 1 :(得分:1)
尝试使用预构建代码第一行的左括号
答案 2 :(得分:1)
条件语句不需要double-qoute(“”)
应该是
if $(ConfigurationName) == Debug (
net stop myService
...
)
答案 3 :(得分:0)
这就是我开始工作的方式:
(此解决方案是企业软件的一部分,其中一些dll文件被其他应用程序重用)
Model是一个在Service项目中引用的项目,它是在Service之前构建的。这就是我们在Model的Pre-Build Events中编写这些代码的原因:
模型预建事件:
xcopy /E /Y "$(ProjectDir)bin\Debug\*" "$(SolutionDir)UI\bin\Debug\ServiceFolder"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" "$(SolutionDir)UI\bin\Debug\ServiceFolder\Service.exe"
net start "Service Name"
服务构建后事件:
{{1}}
关于权限?