无法将文件“*\bin\debug\*.dll”复制到“bin\*.dll”,当出现这种情况时,由于上述错误,编译将失败。
编辑:我知道文件被devenv.exe进程锁定,导致上述错误,因为如果我重新启动VS,问题就会消失,但有没有办法在不重启VS的情况下解决这个问题呢?
我之前也遇到过这个问题,像 Sam 建议的那样重启 VS 似乎可行,但并不是你寻找的解决方案。
然而,MSDN 论坛上有一个帖子名为 "无法从 obj\debug 复制到 bin\debug",提供了一些建议:
选项 1
在项目属性中创建一个预构建操作(右键单击解决方案资源管理器中的项目,选择“属性”选项,选择“生成事件”选项卡)。添加以下代码:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
这将文件复制到不同的名称,并使构建成功进行。
后续跟进:
但是还需要做出一点小改进,让此方法也可以在从头开始运行构建时使用,例如清理后:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
选项 2
我曾经遇到类似的问题,我通过在 [Source Repository of Choice] 中排除 bin 和 obj 文件夹来解决它。
希望对你有所帮助。
FWIW,这个错误已经存在多年了,微软仍然没有修复它。只需搜索“MSB3021”即可查看所有相关帖子。
我以前也遇到过这个问题,如果我没记错的话,我只是关闭了Visual Studio然后重新启动它。如果你知道锁定文件的进程,你需要找到一种方法来a)释放该进程的锁定,b)终止该进程。