你好,Stackoverflow。
最近,当我在 Visual Studio 2010 中编程时,我遇到了 VS 在尝试构建时锁定 bin/Debug/(ProjectName).exe 文件的问题,并在尝试构建项目后给了我以下错误10倍:
无法将文件“obj\x86\Debug\TileEngine.exe”复制到“bin\x86\Debug\TileEngine.exe”。该进程无法访问文件“bin\x86\Debug\TileEngine.exe”,因为它正被另一个进程使用。
当我编辑源代码然后尝试调试时出现问题。我检查过使用不同的程序,唯一使用该文件的程序是 Visual Studio。
如果我在尝试构建之前等待大约 10 分钟,它似乎可以正常工作,但是在尝试不同的东西时,在尝试之前等待 10 分钟是不好的。
我在这个网站以及在谷歌上能找到的任何地方都尝试了不同的解决方案。
我找到了一些解决方案,但对我没有用
解决方案 1 - 使用预构建脚本
在 Stackoverflow 上的一些不同问题中,我找到了一种解决方案,您可以进入Project Properties > Build Events
,然后在Pre-build 事件命令行中添加:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
这使我可以比平时多构建一次项目,但是当再次编辑代码然后构建时,出现了同样的错误。
注意:尝试构建版本而不是调试构建似乎会破坏预构建脚本并以代码“1”退出,这似乎使 VS 无法正确构建。删除预构建脚本使其再次像“正常”一样工作,但仍然出现相同的错误。
解决方案 2 - 以管理员身份运行 Visual Studio
这是我找到的另一种解决方案,但对我来说也没有用,所以我假设 Visual Studio 已经拥有所需的所有权限,并且以管理员身份运行实际上并没有任何区别。
解决方案 3 - 更改 AssemblyVersion
在这个问题中,Visual Studio 构建失败:无法将 exe 文件从 obj\debug 复制到 bin\debug,我找到了另一个解决方案,包括将AssemblyVersion
文件中的Properties\AssemblyInfo.cs
, 更改为"2.0.0.0"
. 然而,这对我没有任何影响。
解决方案 4 - 在构建之前关闭 UserControl 设计器
根据互联网上一些不同的答案,Visual Studio 显然使用构建的项目可执行文件来渲染UserControl
设计器(?)。就我而言,这可能不是它,因为我主要使用 XNA 而它不使用UserControl
设计器。
解决方案 5 - 应用程序退出时清理资源
这可能是我未能正确实施的解决方案。我只是在想,如果这是解决方案,为什么我以前没有被要求这样做。我假设 XNA 会卸载通过Content
管道加载的所有内容,因此这个解决方案没有任何实际意义。
如果有人能够对这个问题有所了解,那就太棒了,因为它阻止了我真正编程任何东西,因为我不喜欢等待 10 分钟,因为我做了 2 秒的更改每时每刻。