无法将文件从obj\Debug复制到bin\Debug

Moh*_*oud 48 c# visual-studio winforms

我在C#中有一个项目,每次尝试编译项目时都会出现此错误:

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

...所以我必须从任务管理器关闭该过程.我的项目只有一种形式,没有多线程.

解决方案是什么(不重启VS或杀死进程)?

在此输入图像描述

这是我们的错误代码,我们如何才能解决这个问题?

use*_*238 28

@Udpate:自从我第一次发布这个"答案"以来,我倾向于对问题进行另一种解释.从那时起,问题也越来越多地发生在Visual Studio之外 - 同时尝试将.exe文件从一个文件夹复制到另一个文件夹.虽然Windows首先不允许复制(!)一个.exe文件(它首先要求我提供管理权限,但无论如何都拒绝复制它)它仍然出现在资源管理器中.但过了一段时间 - 没有采取任何进一步的行动,它神奇地消失了.就像问题中的问题似乎总是在一段时间后解决.所以我假设,问题更多的是延迟删除项目输出文件而不是错误的VS. 我为任何不合理的怀疑道歉.:|

我想,这样就可以找到一个完全不同方向的解决方案.找到该链接并将更新任何进度:

https://superuser.com/questions/234569/windows-7-delayed-file-delete

================================================== ======================

这是VS中的已知错误.我经常发现它 - 主要是在VS2010中(有/没有SP1).建议使用几种"解决方案".其中一些,对我有所帮助:

  1. 删除项目目录中的.suo文件.最终需要从头开始创建整个解决方案.
  2. 关闭所有Windows窗体设计器可能仍保持打开状态.
  3. 使用预构建脚本,该脚本从输出目录中删除目标.
  4. 禁用VS主机进程.

这些都没有真正解决这个问题.但它可能会使VS恢复到可用状态 - 直到MS提供真正的解决方案(如果有的话).

http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/cea5e4b2-5b33-453c-bffb-8da9f1a1fa4a

http://social.msdn.microsoft.com/Forums/en/vbide/thread/cd12f3c7-de96-4353-adce-23975e30933f

  • 为我删除.suo文件是必要的 (3认同)

小智 20

我也可以确认VS 2012 Update 2中存在此错误.

我的解决方法是:

  1. 清洁解决方案(别无其他)
  2. 关闭解决方案中的所有打开的文档/文件
  3. 退出VS 2012
  4. 运行VS 2012
  5. 构建解决方案

我不知道这是否相关,但我的项目在其他项目的类文件中使用"Linked" - 它是一个Silverlight 5项目,并且共享一个兼容.NET和SL的类的唯一方法是链接文件.

需要考虑的事项......在单个解决方案中查找项目中的链接文件.


cha*_*ier 20

这应该工作.

转到您的项目属性.在构建事件内部,在预构建事件命令行下,添加以下两行代码:

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)


Jon*_*gel 9

真正的问题不是你得到的错误; 这是应用程序不会自行清理.

它要么继续引用,要么不释放资源,要么在被告知关闭时导致进程无法结束.修复该问题,此问题将自行解决.除非你发布你的代码,否则我们无法真正帮助你(在这一点上,如果你需要帮助,你应该开始一个新的问题).

  • 这是VS中一个已知(和讨厌)的错误.应用程序域卸载后,应立即强制卸载所有内容.所以这不是由应用引起的,而是由VS引起的. (8认同)

小智 9

如果您查看obj目录,但没有看到您的.exe,则可能是Avast!或其他防病毒软件正在删除它.我实际上会看到.exe显示然后消失.一旦我关闭Avast!,问题就解决了.

VS2010投掷"无法复制文件"obj\x86\Debug\[file] .exe"因为找不到它."


小智 7

发生这种情况是因为[yourProjectName].exe在完成调试后进程没有关闭.

这个问题有两种解决方案.

  1. 每次更改应用程序时,转到任务管理器 - >进程 - > [yourProjectName] .exe,结束此过程.每次更改系统时都必须结束此过程.

  2. 在应用程序中添加退出按钮以退出窗口并将这些行添加到单击事件

    System.Diagnostics.Process.GetCurrentProcess().Kill();
    Application.Exit();
    
    Run Code Online (Sandbox Code Playgroud)


小智 7

  1. 关闭您的项目
  2. 删除bin文件夹

我发现它有效,:)


cog*_*icc 5

我不得不进入Windows资源管理器并删除bin/debug文件夹以及obj/debug文件夹.然后我清理并重建了项目.

  • 从解决方案资源管理器中删除 bin 文件夹就足够了 (2认同)

归档时间:

查看次数:

139830 次

最近记录:

5 年,10 月 前