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

问题描述 投票:45回答:28

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

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

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

解决方案是什么(无需重启VS或终止进程)?

enter image description here

c# winforms visual-studio
28个回答
27
投票

@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


2
投票
  1. 关闭你的项目
  2. 删除bin文件夹

我觉得它有用,:)


2
投票

将程序集重命名为其他名称以解决此问题。


1
投票

如果其他建议不适合您,此URL提出的解决方案帮助了我:http://weblogs.asp.net/fmarguerie/archive/2009/01/29/life-changer-xaml-tip-for-visual-studio.aspx

这个问题也与这个问题有关:VS2012 - XDesProc hangs when Xaml file is opened

由于某种原因,当我打开XAML文件然后构建时,XDesProc进程在使用主程序集的dll文件时停留在内存中


1
投票

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


1
投票

我有同样的问题,在看完你的答案后,去了Task Manager并搜索app.exe,因为我相信也许它不会关闭。 找到它,选择它并做END TASK。我的问题解决了。


1
投票

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


0
投票

将Visual Studio作为Administrator运行


0
投票

我们最近在VS 2012 Update 2的WinPhone 8项目中体验过这一点。

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


0
投票

这听起来很疯狂,当我构建项目时,将显示错误,avast防病毒软件会将其显示为恶意企图,并且项目不会运行。我只是禁用我的防病毒并再次构建我的解决方案。缺少.EXE文件已创建,项目已成功执行。

或者你可以试试这个

Visual Studio build fails: unable to copy exe-file from obj\debug to bin\debug


0
投票

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


19
投票

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

我的解决方法是:

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

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

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


0
投票

我有同样的问题,我修复它的方法是停止和禁用Windows中的“应用程序体验”服务。


0
投票

不能直接回答你的问题..

可能出现的一种情况如下:

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


0
投票

如果遇到此错误,您可以按以下步骤操作

  1. 结束msbuild.exe任务
  2. 结束explorer.exe任务
  3. 再次运行explorer.exe任务

0
投票

对我来说这是防病毒软件。只需将visual studio项目或整个父文件夹添加到防病毒排除列表,或者您也可以添加文件扩展名作为排除项,此方法适用于Visual Studio 2010/2012


0
投票

解决方法1:

  1. 关闭项目。
  2. 删除bin文件夹。
  3. 打开项目。
  4. 建立项目。

溶液2:

在预构建事件中添加以下代码:

attrib -r $(OutDir)*..\* /s

此命令行代码将删除“bin”文件夹的ready-only属性。现在,visual studio可以轻松删除和复制新的dll。


0
投票

多年来我一直在努力。我终于下载了LockHunter来找出锁定文件的人。就我而言,它是MBAM。一旦我将项目的目录添加到MBAMs排除列表中,我就不再有这个问题了。


0
投票

一个非常简单的解决方案是打开任务管理器(CTRL + ALT + DELETE),转到进程选项卡并按名称搜索仍在运行的项目名称的进程。杀死所有进程并继续! :)


0
投票

在搜索和构建和重建后的一天,我发现你只需要关闭视觉工作室,看起来它在不同的线程中捕获服务


0
投票

我的解决方案是:

  1. 清洁解决方案
  2. 根据VS(当前实例)关闭所有进程。
  3. 重建

0
投票

我的Visual Studio 2019突然停止并重新启动,然后当我运行项目时出现此错误。

我通过进入我的项目文件夹并删除bin和obj文件夹来解决此问题然后清理并重建我的项目。这解决了我的问题。


18
投票

这应该工作。

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

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"

0
投票

这个解决方案对我有用:转到Build - > Configuration Manager - > Active solution platform - >选择x64(您可能需要创建新的),将Platform设置为x64并关闭


9
投票

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

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


9
投票

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

VS2010 throwing "Could not copy the file "obj\x86\Debug\[file].exe" because it was not found."


6
投票

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

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

  1. 每次更改应用程序时,转到任务管理器 - >进程 - > [yourProjectName] .exe,结束此过程。每次更改系统时都必须结束此过程。
  2. 在应用程序中添加退出按钮以退出窗口并将这些行添加到单击事件 System.Diagnostics.Process.GetCurrentProcess().Kill(); Application.Exit();

5
投票

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


3
投票

在视觉工作室2012中看到类似的错误之后没有。我发现它转到项目的根文件夹并右键单击它我取消选中只读,这个错误就消失了。显然TFS有时会将文件夹设为只读。希望这可以帮助任何有类似问题的人。谢谢


3
投票

在VS 2010和Win 7中发生了这种情况。案例:

  • 我无法使用调试配置管理器重建,但我可以使用Release Configuration Manager重建

我尝试过的:

  • 在控制面板上检查我的帐户类型 - 用户帐户 - >我的帐户是管理员

  • 将bin文件夹设置为不可读

  • 将bin文件夹中的安全性添加到Everyone

  • 停止iis服务器

  • 停止防病毒,使用任务管理器和Process Explorer检查荒谬的运行程序
  • 以管理员身份运行VS.

如果All仍然无法正常工作。

然后,最后一种尝试方式:

  • 密切解决
  • 关闭视觉工作室
  • 开始 - 关机
  • 按电源按钮打开电脑
  • 登录您的帐户,该帐户具有用户类型的管理员权限
  • 重新开启解决方案
  • 重建
  • 这样工作。所有人都称之为重置计算机
© www.soinside.com 2019 - 2024. All rights reserved.