使用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的表单。
答案 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进程似乎导致文件锁定。
杀死msbuild.exe是一次性解决方案,需要在每个构建的基础上完成。
您可以按以下方式终止进程{{3}}:
taskkill / f / im MSBuild.exe
您可以一劳永逸地禁用并行构建:
工具>选项>项目和解决方案>构建并运行> “并行项目构建的最大数量” - 默认情况下,它的值为8,将其切换为1.
当然构建速度有点慢,但里程可能因用例而异。
这与此有关 mrtumnus
答案 3 :(得分:3)
我见过Windows索引服务导致这种情况。禁用它有帮助。病毒扫描程序也可能有问题。 Mutliple Application.Close()调用也可能导致这种情况。
当然,因为它总是第一次起作用,我想这些不太可能。
答案 4 :(得分:2)
有同样的问题。以下事情有帮助
我的应用程序也会打开一个端口。在调试异常时抛出并退出程序。在结束程序时我关闭了端口。这也有帮助。
但绝对是VS2010的错误。
答案 5 :(得分:1)
我遇到了同样的问题,在我的情况下,我在Visual Studio中打开了有问题的文件。关闭所有文件有帮助。
答案 6 :(得分:0)
我遇到了同样的错误,我被困在这里很多天了。终于解决了这个问题。 我正在开发一个项目,其中添加了许多类库。我将这些库的引用添加到我的主项目中,并错误地将对同一项目的引用添加到自身。因此,当我删除自引用时,它可以工作。
答案 7 :(得分:0)
我自己遇到了这个问题。我打开了项目属性窗口,这显然创建了文件锁。即使关闭窗口后,文件锁仍然保留,我不得不重新启动VS。
P.S。我正在使用 VS 2019 。只需为有我遇到的问题的任何人发布此帖子,然后再发布此帖子。
答案 8 :(得分:0)
如果你在 VS Code 上遇到这个错误;
点击终端屏幕并使用“Ctrl + C”停止运行。