Visual Studio 2010中预生成步骤中的吞咽错误

| 我的解决方案有很多项目,其中一个是Windows服务。我有一个预构建步骤来停止该服务,并有一个后构建步骤来重新启动它(这样,当VS构建/覆盖它时,Windows服务exe不会被锁定)。
on pre-build: 
net stop myservice

on post-build:
net start myservice
如果在我开始构建时服务未运行,则net stop命令将失败,这将阻止继续进行构建。 即使预构建步骤失败了,我该怎么做仍可以强制构建?     
已邀请:
我知道了-您只需要在末尾添加以下语句即可:
SET ERRORLEVEL = 0
或者简单地:
EXIT 0
    
我知道这是一篇旧文章,但最近我也遇到了这个问题。我想终止正在构建的进程(如果正在运行),发现可以执行以下操作: taskkill / f / im $ {TargetName).exe 2> nul 1> nul 出口0 没有
Exit 0
2>nul 1>nul
,反之亦然,似乎无效。我都必须做 另外值得注意的是使用Visual Studio Express 2012。 在浏览此问题时,我也在此博客中找到了解决方案   2> nul 1> nul将吞噬命令中的stderr和stdout。退出0将确保构建事件返回0。     
无需重新分配标准输出,只需重新标准输出。另外,
set errorlevel
允许您以后根据需要添加多余的行。退出将立即终止。
taskkill /f /im:$(TargetFileName) 2>nul &set errorlevel=0
在VS 2017中工作。     
将您的
net
命令包装在批处理文件中,然后使用
exit /B 0
http://ss64.com/nt/exit.html     
有点晚了,但是很好的解决方案,所以我还是会分享。 以下解决方案来自此博客文章。 您只需定义您的根据需要发布构建步骤。您不需要将它们包装到批处理文件中,但是可以。然后,您更改项目文件(例如vbproj或csproj文件),并在项目结束标记之前插入以下片段:
<Target
  Name=\"PostBuildEvent\"
  Condition=\"\'$(PostBuildEvent)\'!=\'\'\"
  DependsOnTargets=\"$(PostBuildEventDependsOn)\">
  <Exec WorkingDirectory=\"$(OutDir)\" Command=\"$(PostBuildEvent)\" ContinueOnError=\"true\" />
</Target>
这改变了Visual Studio执行后期构建步骤的方式。 ContinueOnError属性指示VS忽略错误。它仍会在生成结果中发出警告,但不会停止生成。 您可以通过相应地更改上述片段来对PreBuildEvent进行相同的操作。 当然,这仅适用于完整的所有构建步骤。您不能仅在某些步骤上选择性地忽略错误。如果需要这样做,则必须坚持使用批处理文件的解决方案,但是上述解决方案的好处是您不需要单独的批处理。 萨沙     
将命令嵌入始终返回0的可执行文件中是否可以解决您的问题? 在通话中
system(\"net stop myservice\")
    

要回复问题请先登录注册