我在VS 2010中有一个简单的WinForms解决方案.每当我构建它时,输出文件(bin\debug\app.exe)最终被锁定,后续构建失败,并显示一条消息
"The process cannot access the file 'bin\Debug\app.exe' because it is being used by another process."
.构建项目的唯一方法是重新启动VS之后每一个构建,都非常尴尬.
我发现这篇旧博客帖子http://blogs.geekdojo.net/brian/archive/2006/02/17/VS2005FileLocking.aspx - 似乎这个问题真的很老了.有谁知道这里发生了什么,或者至少有一些解决方法?
更新
我实际上并没有运行该文件.锁定发生在构建之后,而不是在调试之后(即启动VS - 构建 - 构建 - 失败!)并且我尝试关闭防病毒软件.它没有帮助.
更新2
Process Explorer显示已加载文件的devenv.exe(在DLL中,而不在Handles中).看起来构建期间的一些故障阻止了卸载,但是(第一个)构建完成时没有任何消息,然后"1成功,o失败"/
我有一个Visual Studio 2008项目,我"升级"到Visual Studio 2010.自升级以来,我一直遇到很多项目问题(一个项目过去和现在仍然是警察,我可能会添加).
第一个问题是构建主可执行文件会锁定可执行文件,从而导致进一步的重建失败.这是在一个相关的问题中描述的:Visual Studio在构建中锁定输出文件,我选择了解决方法:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Run Code Online (Sandbox Code Playgroud)
除了这个解决方法只适用一次.然后.locked文件也被devenv.exe锁定,必须移动.我一直在通过添加.1.locked,.2.locked等来解决这个问题.唯一一次删除锁以便删除文件是关闭devenv.exe(UI后需要几秒钟)消失,然后可以删除文件).
调试器不必用于导致此问题的事实表明2010构建系统存在相当严重的问题.
我认为我可以打折的一些理论:
更新:此项目在没有防病毒且没有备份实用程序的计算机上具有相同的症状.办公室的机器运行XP SP3 32bit,我的本地机器是Windows 7 64位.这似乎与操作系统无关.
我有一个次要问题,一旦文件被锁定就开始出现:表单设计者停止加载"无法找到程序集"错误.我怀疑这些与早期的锁定问题有关,因为设计人员在构建之前就开始了,但是进行任何更改和重建都会导致所有设计人员崩溃并出现错误(即使是我已经打开并作为当前视图).
观看靠近白色错误屏幕的表单是可怜的,因为你将"dummy = 1"改为"dummy = 2",其中"dummy"绝对没有任何东西,只是强制重新编译一个完全不相关的程序集.
更新:我已经尝试了一些补救措施:未选中启用.NET源步进,因此这不是问题.删除.SUO(解决方案用户选项)只需重启通常可以解决问题(两个构建:第一个因为没有锁定文件而第二个因为有一个,但它可以由脚本重命名).
Error 28 Unable to copy file "obj\Debug\PolicyTracker3.exe" to "bin\Debug\PolicyTracker3.exe".
The process cannot access the file 'bin\Debug\PolicyTracker3.exe' because it is being used by another process.
Run Code Online (Sandbox Code Playgroud) 你好,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分钟并不好.
我在这个网站上以及我在Google上找到的所有地方都尝试了不同的解决方案.
在Stackoverflow上的一些不同的问题中,我发现了一个解决方案是你进入Project Properties > Build Events,然后在预构建事件命令行中添加:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Run Code Online (Sandbox Code Playgroud)
这使我有可能比平时更多地构建项目,但是当再次编辑代码然后构建时,出现了同样的错误.
注意:尝试构建版本而不是调试版本似乎打破了预构建脚本,并且它以代码"1"退出,这似乎使VS无法正确构建.删除预构建脚本使其再次像"正常"一样工作,但仍然有相同的错误.
这是我发现的另一个解决方案,但是对我来说也没有用,所以我认为Visual Studio已经拥有所需的所有权限并且以管理员身份运行实际上没有任何区别.
在这个问题中,Visual Studio构建失败:无法将exe文件从obj\debug复制到bin\debug,我找到了另一个解决方案,包括AssemblyVersion在Properties\AssemblyInfo.cs文件中更改"2.0.0.0".然而,这对我没有任何影响.
根据互联网上的不同答案,Visual Studio显然使用构建的项目可执行文件来渲染UserControl设计器(?).在我的情况下,这可能不是它,因为我主要使用XNA而且它不使用UserControl设计器.
这可能是我未能正确实施的解决方案.我只是想,如果这是解决方案,我怎么没有被要求这样做.我假设XNA卸载了通过Content管道加载的所有内容,因此这个解决方案不会"真正有意义".
如果有人能够在这个问题上传播一些亮点,那真的很棒,因为它阻止我编程任何东西,因为我不喜欢等待10分钟因为我做了2秒钟的改变每时每刻.