上下文
在调试(使用" 调试"菜单F5)Visual Studio解决方案时,MyApp.vshost.exe会创建一个调用的进程.当你不雅地停止调试时- 我的意思是使用Stop Debug菜单SHIFT+ F5而不是等待Application.Exit()发生的代码行- 这个过程不会被杀死.
有时,当您稍后再次开始调试应用程序时,会出现一条错误消息,指出该文件(显然,它是调试使用的文件:) bin\Debug\MyApp.vshost.exe已经在使用中.
这就是我在Build命令行中添加以下命令的原因: taskkill /F /IM MyApp.vshost.exe
问题
当MyApp.vshost.exe进程不存在时,Visual Studio有时会在构建时抛出错误,从而阻止构建应用程序:
Error c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
The command "taskkill /F /IM MyApp.vshost.exe" exited with code 128.
Run Code Online (Sandbox Code Playgroud)
我找到的唯一现有解决方案是删除构建事件.
问题
有没有办法解决错误消息而不删除构建事件?
我认为最好的解决方案是检索errorlevel命令的返回码(),如果它等于128则返回0.是否可以在项目的构建事件中执行此操作?
每次我进行构建时,我都希望这个Pre-build事件发生:
del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config
Run Code Online (Sandbox Code Playgroud)
如果目录在那里,这工作正常.但是如果目录不存在那么它将导致构建失败.我尝试做这样的事情来检查目录是否存在:
if Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\')
del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config
Run Code Online (Sandbox Code Playgroud)
但我相信我的语法错误,因为我得到一个255的退出代码.什么是让它工作的正确方法?
谢谢!