我在 Visual Studio 中遇到一个奇怪的问题:
如果在调试过程中抛出未处理的异常,我将无法构建我的 C# 应用程序:
Unable to copy file "C:\Projects\A\bin\A.dll" to "..\..\bin\A.dll".
The process cannot access the file '..\..\bin\A.dll' because it is being used
by another process.
Could not copy "C:\Projects\A\bin\A.dll" to "..\..\bin\A.dll".
Exceeded retry count of 10. Failed.
The file is locked by: "Microsoft Visual Studio 2019 (14904)"
有没有永久的解决方案来解决这个奇怪的错误? (我目前唯一的解决方法是重新启动 Visual Studio)
我尝试过但对我不起作用:
在我的所有项目中插入预构建事件脚本也是不切实际的!链接:https://blog.ndepend.com/visual-studio-script-saves-time-pain/
有没有人能解决这个问题?
对我有用的方法 - 关闭解决方案,删除 bin 和 obj 文件夹,重新打开并构建。
有点奇怪,但问题是由“调试”选项引起的
Use Managed Compatibility Mode
!因此,只需取消选中“调试”->“选项”->“Use Managed Compatibility Mode
”,Visual Studio 就不再出现文件锁定错误!
备注: 禁用此选项的缺点是你会遇到 VS 带来的恼人的长时间耗时的评估错误! (更多信息)
删除 obj 和 bin 文件夹对我来说是不可能的,所以我必须安装 Microsoft 的 Process Explorer 才能找到应用程序的 dll 进程仍在运行。杀死这个过程对我有用。
这有点愚蠢,但是: 在 Windows 任务管理器的“进程”选项卡中,只需找到 Microsoft Visual Studio <2019>,单击“^”折叠其子树并找到“Microsoft Visual Studio XAML Designer” 选择“Microsoft Visual Studio XAML Designer”并在每次调试之前简单地结束处理。
删除对我来说是不可能的,但事实证明,VS2019 保留了运行的软件的调试版本,当我停止调试时,该版本不会自动关闭。在任务管理器 -> 关闭正在运行的应用程序,我可以再次开始构建/调试。
我在 VS2019 的 WinForms 项目中遇到过这种情况,其中其他建议的解决方案都不起作用,并且退出 VS 并尝试删除受影响的文件被操作系统拒绝,仍然声称文件已打开。
在这种情况下,有效的修复方法是转到任务管理器,找到并终止 VBCSCompiler 的副本,该副本即使在 VS 终止后仍保持运行。它显示在“后台进程”下。
之后,再次启动VS,一切正常。
删除对我也有效,但只有在我从taskmgr强制退出DTSDebugHost之后,才能使其无法正常工作。
我也遇到了同样的情况,它发生是因为运行后打开的 bash 窗口,我没有关闭它,只是最小化它,它仍在运行。因此,当我再次尝试运行该程序时,它显示该文件被另一个进程锁定,在我的情况下,很明显我需要退出之前打开的 bash 窗口。
除了尝试其他解决方法之外,还可以检查这个。
在构建之前运行 Clean 或使用 Rebuild 选项。 VS 会构建得很好。有点慢,但每次都有效。无需重启 VS。
我的情况很简单。当我尝试再次运行应用程序并收到此错误时,我的应用程序已经在运行。关闭它解决了我的问题。