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

C# 无法将文件从obj\Debug复制到bin\Debug,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我有一个C#版本的项目,每次我试图编译该项目时都会出现以下错误: (无法将文件“obj\Debug\Project1.exe”复制到“bin\Debug\Project1.exe”。进程无法访问文件“bin\Debug\Project1.exe”,因为其他进程正在使用该文件。) 因此,我必须从任务管理器关闭流程。我的项目只有一种形式,没有多线程 解决方案是什么(不重新启动VS或终止流程) 真正的问题不是你所犯的错误;这是因为应用程序本身没有清理 它要么保留引用,而不是释放资源,要么在被告知关闭时

我有一个C#版本的项目,每次我试图编译该项目时都会出现以下错误:

(无法将文件“obj\Debug\Project1.exe”复制到“bin\Debug\Project1.exe”。进程无法访问文件“bin\Debug\Project1.exe”,因为其他进程正在使用该文件。)

因此,我必须从任务管理器关闭流程。我的项目只有一种形式,没有多线程

解决方案是什么(不重新启动VS或终止流程)


真正的问题不是你所犯的错误;这是因为应用程序本身没有清理


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

@Udpate:自从我第一次发布这个“答案”以来,我倾向于对这个问题进行另一种解释。在尝试将.exe文件从一个文件夹复制到另一个文件夹时,该问题也越来越多地发生在Visual Studio之外。虽然Windows最初不允许复制(!)一个.exe文件(它最初向我请求管理权限,但后来拒绝复制),但它仍然显示在资源管理器中。但是过了一段时间——没有采取任何进一步的行动,它神奇地消失了。就像问题中的问题总是在一段时间后自行解决一样。因此,我认为,问题更多地与延迟删除项目输出文件有关,而不是与错误有关。对于任何不合理的怀疑,我深表歉意

我想,这给了寻找解决方案一个完全不同的方向。未找到该链接,并将更新任何进展:

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

这是VS中的一个已知错误。我经常发现它——主要是在VS2010中(有/没有SP1)。推荐几种“解决方案”。其中一些对我有帮助:

  • 删除项目目录中的.suo文件。最终需要从头开始创建整个解决方案
  • 关闭窗体设计器可能保持打开状态的所有窗口
  • 使用预构建脚本,从输出目录中删除目标
  • 禁用VS宿主进程
  • 这些都不能真正修复这个bug。但它可能会使VS回到可用状态——直到MS提供真正的解决方案(如果愿意的话)


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

    这个问题有两种解决方案

  • 每次对应用程序进行更改时,请转到“任务管理器->流程->[yourProjectName].exe”,结束此流程。每次对系统进行更改时,都必须结束此过程

  • 在应用程序的“退出”窗口中添加一个“退出”按钮,并将这些行添加到“单击事件”

    System.Diagnostics.Process.GetCurrentProcess().Kill();
    Application.Exit();
    

  • 在visual Studio 2012中看到类似错误后,不知从何而来。我发现进入项目的根文件夹并右键单击它时,我取消选中了只读,这个错误消失了。显然,TFS有时会将文件夹设置为只读。希望这能帮助任何有类似问题的人。感谢以管理员身份运行Visual Studio,我可以确认VS 2012更新2中也存在此错误

    我的工作是:

  • 清洁溶液(不要做其他事情)
  • 关闭解决方案中所有打开的文档/文件
  • 退出VS 2012
  • 跑步VS 2012
  • 构建解决方案
  • 我不知道这是否相关,但我的项目使用来自其他项目的“链接”类文件-这是Silverlight 5项目,共享与.NET和SL兼容的类的唯一方法是链接这些文件


    有些事情要考虑……在单个解决方案中跨项目查找链接文件。

    我们最近在VS 2012 Update 2中的WinPhone 8项目中遇到了这种情况


    令人费解的是,原因是使用了元组类型。删除使用元组的代码后,问题就消失了。将代码添加回返回的问题。

    这听起来很疯狂,每当我构建项目时,都会显示错误,avast antivirus会将其显示为恶意尝试,并且项目不会运行。我只是简单地禁用防病毒并重新构建解决方案。丢失的.EXE文件已创建,项目已成功执行

    或者你可以试试这个


    我通过杀死
    XDesProc
    解决了这个问题,它在无法删除的DLL上有一个句柄。

    在重建解决方案之前,清除项目,停止IIS并打开“bin”文件夹属性。取消选中“常规”选项卡中的“只读”属性,然后重新生成。

    如果您查看obj目录,但没有看到您的.exe,则可能是Avast!或者其他防病毒软件正在删除它。我会看到.exe出现然后消失。我一关掉Avast!,问题解决了


    我也有同样的问题,我解决问题的方法是停止并禁用Windows中的“应用程序体验”服务。

    我也有同样的问题,在阅读了您的答案后,转到任务管理器,搜索
    app.exe
    ,因为我相信它可能没有关闭。

    找到它,选择它,然后执行
    结束任务
    。我的问题解决了。

    不是对你问题的直接回答

    下面列出了可能出现这种情况的一种情况-


    如果您的应用程序正在调试过程中,例如通过“附加到进程”调试,则可能会出现此错误

    我发现结束所有msbuild.exe任务(在任务管理器中)修复了VS2012的问题。

    这在VS 2010和Win 7中发生过。。 案例:

    • 我不能
      if exist "$(TargetPath).locked" del "$(TargetPath).locked"
      if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"