为什么vsdebug没有生成obj文件_c#-无法将文件从obj \ Debug复制到bin \ Debug

在C#项目中遇到编译错误,提示无法将文件从obj\Debug复制到bin\Debug,因为文件被其他进程占用。解决方案包括:关闭打开的Windows窗体设计器,删除.suo文件,预构建脚本删除或移动目标文件,关闭防病毒软件,确保项目无跨项目链接文件,检查文件夹权限和只读设置,以及结束占用进程等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

30个解决方案

27 votes

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

我猜这为寻找解决方案提供了一个完全不同的方向。 确实找到了该链接,并将更新任何进度:

[HTTPS://superuser.com/questions/234569/Windows-7-delayed-file-delete]

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

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

删除项目目录中的.suo文件。 最终需要从头开始创建整个解决方案。

关闭任何Windows窗体设计器都可能保持打开状态。

使用预构建脚本,该脚本将从输出目录中删除目标。

禁用VS托管过程。

这些都不能真正修复该错误。 但是,这可能会使VS返回到可用状态-直到MS提供真正的解决方案为止(如果有的话)。

[HTTP://social.MSDN.Microsoft.com/forums/恩/vs的bug/thread/CEA5哦4不2-5不33-453从-不反腐败-8大9发1啊1发4啊]

[HTTP://social.MSDN.Microsoft.com/forums/恩/VB IDE/thread/成都12发3从7-的96-4353-ADC E-23975哦30933发]

user492238 answered 2020-06-19T08:24:09Z

20 votes

这应该工作。

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

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

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

chaosifier answered 2020-06-19T08:24:33Z

19 votes

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

我的解决方法是:

干净的解决方案(什么也不做)

关闭解决方案中的所有打开的文档/文件

退出VS 2012

运行VS 2012

建立解决方案

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

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

Rob Ainscough answered 2020-06-19T08:25:28Z

9 votes

真正的问题不是您得到的错误;而是错误。 这是因为应用程序本身没有清除。

它要么坚持引用,不释放资源,要么其他原因导致进程在被告知关闭时无法结束。 解决该问题,此问题将自行解决。 除非您发布代码,否则我们无法真正为您提供帮助(此时,如果您需要帮助,则应该提出一个新问题)。

Jon Seigel answered 2020-06-19T08:25:53Z

9 votes

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

VS2010抛出“由于找不到文件,无法复制文件“ obj \ x86 \ Debug \ [file] .exe”。”

Bryan answered 2020-06-19T08:26:17Z

7 votes

发生这种情况是因为System.Diagnostics.Process.GetCurrentProcess().Kill();

Application.Exit();进程在完成调试后没有关闭。

有两个解决方案。

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

在您的应用程序中添加退出按钮以退出窗口,并添加这些行以单击事件

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

Application.Exit();

rajan answered 2020-06-19T08:26:55Z

5 votes

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

coggicc answered 2020-06-19T08:27:15Z

3 votes

在Visual Studios 2012中看到类似的错误之后。 我发现转到项目的根文件夹并右键单击它时,我未选中“只读”,并且此错误消失了。 显然,TFS有时会使文件夹变为只读。 希望这对遇到类似问题的人有所帮助。 谢谢

answered 2020-06-19T08:27:36Z

3 votes

这是我在VS 2010和Win 7上发生的。案件 :

我无法使用“调试配置”管理器进行重建,但是可以使用“发布配置”管理器进行重建

我尝试过的

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

设置bin文件夹为非只读

在bin文件夹中向所有人添加安全性

停止iis服务器

停止防病毒,使用任务管理器和ProcessExplorer检查可笑的正在运行的程序

以管理员身份运行VS

如果所有方式仍然无法正常工作。

然后,尝试的最后一种方法:

封闭解决方案

关闭视觉工作室

启动-关闭

按电源按钮打开计算机

登录到具有用户类型管理员权限的帐户

重新打开解决方案

重建

这样工作。 所有人都称这种方式为“重置计算机”

Khaneddy2013 answered 2020-06-19T08:29:14Z

2 votes

关闭你的专案

删除bin文件夹

我发现它有效,:)

Novpiar Effendi answered 2020-06-19T08:29:42Z

2 votes

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

Sofia Khwaja answered 2020-06-19T08:30:02Z

1 votes

如果其他建议对您不起作用,则此URL上提出的解决方案可以帮助我:[http://weblogs.asp.net/fmarguerie/archive/2009/01/29/life-changer-xaml-tip-for-visual-studio.aspx]

这个问题也与此问题有关:VS2012-打开Xaml文件时XDesProc挂起

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

Kirill Chilingarashvili answered 2020-06-19T08:30:31Z

1 votes

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

Kadir Can answered 2020-06-19T08:30:51Z

1 votes

在阅读您的答案后,我遇到了同样的问题,转到Task Manager,并搜索app.exe,因为我认为它可能不会关闭。

找到并选择它,然后执行END TASK .my问题已解决。

Hamid Talebi answered 2020-06-19T08:31:16Z

1 votes

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

mizzle answered 2020-06-19T08:31:37Z

0 votes

以Administrator运行Visual Studio

Alexander Trofimov answered 2020-06-19T08:31:57Z

0 votes

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

莫名其妙的原因是使用元组类型。 删除使用元组的代码,问题就消失了。 重新添加代码返回的问题。

Seamus answered 2020-06-19T08:32:23Z

0 votes

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

或者你可以尝试一下

Visual Studio构建失败:无法将exe文件从obj \ debug复制到bin \ debug

coolprarun answered 2020-06-19T08:32:53Z

0 votes

我通过杀死XDesProc来解决此问题,该文件在无法删除的DLL上具有句柄。

Charlie answered 2020-06-19T08:33:13Z

0 votes

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

Kataku answered 2020-06-19T08:33:33Z

0 votes

不是您问题的直接答案。

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

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

LCJ answered 2020-06-19T08:34:02Z

0 votes

如果遇到此错误,可以按照以下步骤进行

结束explorer.exe任务

End the explorer.exe task

再次运行explorer.exe任务

zawhtut answered 2020-06-19T08:35:31Z

0 votes

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

Alex answered 2020-06-19T08:35:51Z

0 votes

解决方案1:

关闭项目。

删除bin文件夹。

打开项目。

生成项目。

解决方案2:

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

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

此命令行代码将删除“ bin”文件夹的仅就绪属性。 现在,Visual Studio可以轻松删除和复制新的dll。

Rocky answered 2020-06-19T08:36:45Z

0 votes

多年来,我一直在为此奋斗。我终于下载了LockHunter,以找出谁锁定了该文件。以我为例,它是MBAM。将项目目录添加到MBAM排除列表后,我再也没有这个问题了。

tmighty answered 2020-06-19T08:37:05Z

0 votes

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

Dina Bogdan answered 2020-06-19T08:37:26Z

0 votes

经过一天的搜索,构建和重建,我发现您只需要关闭visual studio,就可以像在不同线程中捕获服务一样

moath naji answered 2020-06-19T08:37:46Z

0 votes

我的解决方法是:

清洁溶液

根据VS(当前实例)关闭所有进程。

重建

Esther Lalremruati answered 2020-06-19T08:38:18Z

0 votes

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

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

mehmoodnisar125 answered 2020-06-19T08:38:43Z

0 votes

这个解决方案对我有用:转到构建->配置管理器->活动解决方案平台->选择x64(您可能必须创建新的),将平台设置为x64并关闭

Adi answered 2020-06-19T08:39:03Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值