构建错误:"进程无法访问该文件,因为它正由另一个进程使用"

Sha*_*ica 81 c# visual-studio-2010 winforms

我有一个C#webforms应用程序,直到今天才一直在游泳.

现在,突然间,每次我尝试运行应用程序时,都会出现文件锁定错误:

无法将文件"obj\Debug\MyProject.exe"复制到"bin\Debug\MyProject.exe".该进程无法访问文件"bin\Debug\MyProject.exe",因为它正由另一个进程使用.

谷歌搜索错误没有提出超出明显的任何东西,即VS认为文件被锁定.它肯定是Visual Studio本身锁定文件,因为当我关闭VS并重新打开它时,项目执行正常 - 第一次.当我第二次尝试运行它时,我收到文件锁定错误.

每次我想运行应用程序时关闭VS并重新打开都不是一个可行的解决方法!如何找出锁定文件的内容,并阻止其被锁定?

编辑:另一个有趣的发现:我甚至不必运行该应用程序.只需编译一次就会导致文件锁定; 我不能连续两次编译!

此问题特定于我的解决方案中的一个项目.所有其他项目都可以正常工作,并且可以根据需要执行多次.只有这一个项目才会被锁定.

小智 120

我找到了一个适合我的简单解决方案.它是这样的:

出现问题时,只需更改顶部的构建配置(如果在"Release"中更改为"Debug",反之亦然),构建然后再更改回以前的配置并再次构建.

截图

我想更改配置会释放vcshost和devenv.

  • @ChrisEmerson我也注意到了.我可以切换到Release并构建和运行应用程序,但在切换回Debug之后甚至无法构建项目. (3认同)
  • 这只工作过一次,然后就再也没有工作过。重启VS后也不行。无论我在发布和调试之间切换多少次,它都会失败。 (3认同)
  • 最佳答案,海事组织。(啊——他给了自己信誉。) (2认同)

Sha*_*ica 24

好吧,我自己解决了这个问题 - 虽然我仍然不知道为什么.我决定通过从项目中删除所有文件来隔离问题,然后重新添加它们并确定哪个文件是我的麻烦来源.因此,我一个接一个地将文件重新引入项目,编译和清理每一步......直到...我添加了最后一个......

......一切都还好.

我对原始.csproj的源代码控制进行了比较; 没有真正的差异.即使我尝试恢复到之前版本的.csproj,它仍然有效.

黑魔法.如果它有效,有时最好不要问为什么 - 只要接受它并继续前进......

编辑:问题是一个反复出现的问题,我相信当编译器在编译时打开抽象/通用表单时,我已将其隔离.

获得的经验:在编译之前,确保关闭任何抽象或通用表单或控件的表单设计器!如果没有,你必须关闭VS并重新打开!

  • 这仍然发生在仅命令行项目(没有形式),所以我不确定你是否真的在做任何事情. (2认同)

小智 16

我们在此处发现的内容如下:在项目属性页面的"调试"选项卡中,取消选中"启用Visual Studio托管过程".我不确定这个属性是什么,但它一旦取消选中就完成了工作.

  • 它确实解决了问题,但Console.WriteLine()不再在"输出"窗口中输出字符串. (4认同)
  • 取消选中控制台应用程序上的框后问题仍然存在. (2认同)
  • 它适用于Windows客户端项目.我取消选中该框,成功构建,然后重新检查并再次成功构建. (2认同)

Jus*_*n W 9

实际上你应该想要"启用Visual Studio托管过程".至少对于VS2010来说.我也有:

如果存在"$(TargetPath).locked"del"$(TargetPath).locked"如果存在"$(TargetPath)"如果不存在"$(TargetPath).locked"move"$(TargetPath)""$(TargetPath) .locked"

在预构建选项中.这个问题困扰了我很长一段时间,直到John W.提到这个复选框,我甚至注意到它存在并且很低,并且它已经没有被检查了.

另请注意,即使没有调试,-app-vshost.exe也会在后台运行.这就是每次我猜它成功构建和运行的原因.它以前没有运行过.我还尝试清理调试和释放文件夹并不断更改目标类型,除了上面所述之外没有任何工作.之前我的解决方案是在构建之间等待5分钟,这使得完成任务变得非常烦人且耗时.我没有看到行为的任何变化,其中重要的是打开或XNA与Windows窗体或打开设计器的选项卡.此问题发生在32位或64位版本中,如果我使用ALT-F4杀死应用程序或使用任务管理器将其终止,这无关紧要,理论上,这将不允许应用程序关闭或释放资源.起初我以为这是垃圾收集问题.


Ola*_*døy 6

我通过重命名锁定的文件(使用 Windows 资源管理器)克服了这个问题。我不被允许删除文件,但重命名锁定的文件有效!


Joh*_*mse 5

稍微迟到了,但我通过转到项目的属性>选项卡"Debug">取消选中"启用Visual Studio托管过程"来解决这个问题.


Joh*_*ntu 5

我通过删除文件夹 bin\Debug 并可能重新启动 VS 解决了这个问题


llo*_*oyd 5

VS2017-通过在Windows任务管理器中关闭MSBuild.exe的所有实例来解决


Ala*_* M. 5

不幸的是,没有一个答案对我有用。这就是解决它的方法:

Win Key+R并运行resmon.exe。在那里你会找到 VS 声称正在使用该文件的 EXE 进程。右键单击并结束该过程。尽管您可能会收到“访问被拒绝”错误消息,但它会被挂起,您将能够再次构建。