首页 文章

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

提问于
浏览
29

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

错误1无法将文件“obj \ Debug \ Application.dll”复制到“bin \ Debug \ Application.dll” . 该进程无法访问文件'bin \ Debug \ Application.dll',因为它正由另一个进程使用 .

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

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

我不确定这是什么时候开始发生的,但我很确定这是最近的事情 .

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

错误1无法将文件“obj \ Debug \ Application.dll”复制到“bin \ Debug \ Application.dll” . 无法对打开了用户映射部分的文件执行请求的操作 .

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

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

UPDATE 3 :我想我已经使用UserControl将其缩小为一个表单 .

7 回答

  • 6

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

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

  • 9

    这是我如何解决这个问题

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

  • 12

    根据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是一次性解决方案,需要在每个构建的基础上完成 .

    您可以按如下方式终止进程mrtumnus

    taskkill / f / im MSBuild.exe

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

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

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

    当然构建现在有点慢,但里程可能会根据您的使用情况而有所不同 .

    这与Error: Cannot access file bin/Debug/... because it is being used by another process有关

  • 3

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

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

  • 0

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

    • 在调试时关闭所有设计文件

    • 使用解锁器

    我的应用程序也打开一个端口 . 在调试异常时抛出并退出程序 . 在结束程序时我关闭了端口 . 这也有帮助 .

    但绝对是VS2010的错误 .

  • 2

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

  • 1

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

相关问题