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

Chr*_*son 30 visual-studio

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

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

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

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

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

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

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

什么是"用户映射部分"?

更新2:当我尝试调试时在设计视图中打开窗体时,似乎会出现此问题.我将进行更多故障排除,然后发布我的结果.

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

Chr*_*son 12

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

Unlocker不能在64位操作系统上运行,但LockHunter确实如此.

  • 等等,克里斯汤普森回答克里斯汤普森?大声笑. (34认同)
  • @Andy 我知道,我做了两次尝试 ;-) (2认同)
  • 这是 VS2010 中已确认的错误,应该在 SP1 中解决。 (2认同)

小智 9

这是我如何解决这个问题

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


war*_*ent 6

根据错误:无法访问文件bin/Debug/...因为它被TarmoPikaro的另一个进程回答使用,有时Visual Studio会创建多个msbuild.exe ghost进程,这些进程在构建后仍然存在.这些ghost进程似乎导致文件锁定.

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

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

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

taskkill/f/im MSBuild.exe

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

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

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

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

这与错误有关 :无法访问文件bin/Debug/...因为它正由另一个进程使用