当我在Visual Studio中调试时,为什么会出现“文件被其他进程使用”错误?

时间:2009-11-30 06:04:49

标签: visual-studio

使用Visual Studio 2010测试版,当我在IDE中运行我的应用程序进行调试时,它第一次完美运行。但是,在关闭调试会话后,通过关闭应用程序或单击停止调试按钮,所有后续调试应用程序的尝试都将失败:

  

错误1无法复制文件“obj \ Debug \ Application.dll”   至   “斌\调试\ Application.dll”。   该进程无法访问该文件   '本\调试\ Application.dll'   因为它被另一个人使用   过程

来自SysInternals的Handle.exe确实显示句柄打开,但即使我关闭句柄,错误也不会消失。任何手动删除文件的尝试都会导致“拒绝访问”错误消息。

要解决此问题,我必须完全重启Visual Studio,之后Debug会话将工作一次并再次停止。

我不确定这种情况何时开始发生,但我很确定这是最近的事情。

UPDATE :强制关闭Application.dll上的句柄后,我从VS收到以下错误:

  

错误1无法复制文件   “OBJ \调试\ Application.dll”   至   “斌\调试\ Application.dll”。   请求的操作不能   在具有用户映射的文件上执行   部分开放。

什么是“用户映射部分”??

更新2 :在尝试调试时,如果在“设计”视图中打开了表单,则会出现此问题。我将进行更多故障排除,然后发布我的结果。

更新3 :我认为我已将其缩小为使用UserControl的表单。

9 个答案:

答案 0 :(得分:12)

老实说,这听起来像VS2010中的一个错误。由于某种原因,当调试器停止时它没有关闭打开的句柄。杀死VS进程会自动关闭这些句柄,允许您再次访问该文件。作为一种解决方法,你可以看一下unlocker它是免费的并且效果非常好。我知道这不是一个好的答案,但它应该比重启VS更快。您也可以考虑发送错误报告......

Unlocker在64位操作系统上不起作用,LockHunter确实如此。

答案 1 :(得分:9)

以下是我解决这个问题的方法

*我打开项目属性, *选择构建选项卡, *清除输出路径, *和buid(这将在根文件夹中创建dll) *返回输出路径并选择浏览(浏览到bin目录以进行调试/发布)并瞧!

答案 2 :(得分:6)

根据Error: Cannot access file bin/Debug/… because it is being used by another process answer by TarmoPikaro,有时Visual Studio会创建多个msbuild.exe ghost进程,这些进程在构建后会持续存在。这些ghost进程似乎导致文件锁定。

解决方案1 ​​ - 杀死鬼MSBuild.exe的

杀死msbuild.exe是一次性解决方案,需要在每个构建的基础上完成。

您可以按以下方式终止进程{​​{3}}:

taskkill / f / im MSBuild.exe

解决方案2 - 在Visual Studio中禁用并行构建

您可以一劳永逸地禁用并行构建:

工具>选项>项目和解决方案>构建并运行> “并行项目构建的最大数量” - 默认情况下,它的值为8,将其切换为1.

当然构建速度有点慢,但里程可能因用例而异。

这与此有关 mrtumnus

答案 3 :(得分:3)

我见过Windows索引服务导致这种情况。禁用它有帮助。病毒扫描程序也可能有问题。 Mutliple Application.Close()调用也可能导致这种情况。

当然,因为它总是第一次起作用,我想这些不太可能。

答案 4 :(得分:2)

有同样的问题。以下事情有帮助

  1. 调试时关闭所有设计文件
  2. 使用解锁器
  3. 我的应用程序也会打开一个端口。在调试异常时抛出并退出程序。在结束程序时我关闭了端口。这也有帮助。

    但绝对是VS2010的错误。

答案 5 :(得分:1)

我遇到了同样的问题,在我的情况下,我在Visual Studio中打开了有问题的文件。关闭所有文件有帮助。

答案 6 :(得分:0)

我遇到了同样的错误,我被困在这里很多天了。终于解决了这个问题。 我正在开发一个项目,其中添加了许多类库。我将这些库的引用添加到我的主项目中,并错误地将对同一项目的引用添加到自身。因此,当我删除自引用时,它可以工作。

答案 7 :(得分:0)

我自己遇到了这个问题。我打开了项目属性窗口,这显然创建了文件锁。即使关闭窗口后,文件锁仍然保留,我不得不重新启动VS。

P.S。我正在使用 VS 2019 。只需为有我遇到的问题的任何人发布此帖子,然后再发布此帖子。

答案 8 :(得分:0)

如果你在 VS Code 上遇到这个错误;

点击终端屏幕并使用“Ctrl + C”停止运行。