解决“The command "taskkill /F /IM MyApp.vshost.exe" exited with code 128”错误。

11

背景
调试 Visual Studio 解决方案时(使用 Debug 菜单的 F5),会创建一个名为 MyApp.vshost.exe 的进程。当你停止调试时(不是等待代码行像 Application.Exit() 进行一样的操作,而是使用 Stop Debug 菜单的 SHIFT+F5),这个进程并不会被杀死。

有时,当您再次开始调试应用程序时,会出现一个错误消息,指示文件已被占用,显然是调试所用的文件:bin\Debug\MyApp.vshost.exe

因此,我在生成事件中添加了这条命令行: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.

我找到的唯一解决方案是删除构建事件。

问题
有没有一种方法可以在不删除构建事件的情况下解决错误消息?

编辑

我认为最好的解决方案是检索命令的返回代码(errorlevel),然后如果它等于128,则返回0。是否可以在项目的构建事件中执行此操作?


你能详细说明一下你的应用程序正在做什么吗?例如,你是否通过 Office Interop 组件与 Excel 或 Word 等外部进程应用程序进行接口交互? - Kev
@Kev:我所有的应用程序都有问题,包括_Windows表单项目_和_Windows服务_,有些甚至无法与Excel或Word一起使用。我拥有的最简单的应用程序是一个服务,它具有定时器检查MSSQL数据库并执行简单任务的功能。 - Otiel
任何解决方案,使用MSBuild的类似问题:MSBUILD:警告MSB3073:命令“DEL“C:\Clientes*.*”/q/f/s”退出代码128。 - Kiquenet
4个回答

18
taskkill /F /IM MyApp.vshost.exe 2>&1 || exit /B 0

7
这对我有效,不过在我删除双竖杠,并将它变成单竖杠“|”之前,我遇到了问题。 - Justin Pihony
1
我建议使用条件测试:taskkill /f /fi "pid gt 0" /im MyApp.vshost.exe 来源 - itsho
一样的情况。在VS 2015中,单管道起作用taskkill /f /im excel.exe 2>&1 | exit /B 0 - Steve Johnson
理论上应该是双竖线:“双竖线(||)会在前一个命令失败时运行其后的命令”。来自http://windowsitpro.com/windows/jsi-tip-0290-conditional-processing-symbols-filters-and-redirection-batch-processing - kristianp

2

作为临时解决方案,您可以禁用Visual Studio主机进程:

如何禁用主机进程

禁用主机进程

在Visual Studio中打开项目。

在“项目”菜单上,单击“属性”。

单击“调试”选项卡。

清除“启用Visual Studio主机进程”复选框。

这样做的副作用可能是可取的,也可能不可取:

通常情况下,禁用主机进程会导致:

开始调试.NET Framework应用程序所需的时间增加。

设计时表达式求值不可用。

部分信任调试不可用。


2
MyApp.vshost.exeVisual Studio hosting process,旨在改善调试体验。如果您自己杀死此进程,则Visual Studio将重新创建它。如果您想摆脱它,可以在项目的调试属性中关闭托管进程(此处显示C#): Debug project properties 您描述您遇到的错误为“进程已在使用中”。我认为我自己没有经历过这种情况,但在工作电脑上,在调试后构建时遇到了很大的麻烦。似乎MyApp.exe被锁定,无法被覆盖(“文件已在使用中”,而不是“进程”),导致构建失败。我相信病毒扫描器(Microsoft Forefront)会引起这些问题,但在企业环境中,我无法关闭扫描器以测试我的假设。
在许多情况下,禁用托管进程对调试体验不会产生明显影响。

没错,应该是“文件已在使用”而不是“进程”。我修改了我的问题。 - Otiel

-1

以管理员权限运行 IDE 吗?(我知道微软曾经建议过这样做)


不,不以管理员身份运行IDE。 - Otiel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接