无法将"obj\Debug\Program.exe"复制到"bin\Debug\Program.exe"。重试次数超过10次。失败。

4

我正在尝试从互联网下载文件。我有一个if语句,否定子句会触发文件下载。这是我的代码:

if (!FileDownload)
{

}
else
{
    using (WebClient wc = new WebClient())
    {
        wc.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
        wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
        wc.DownloadFileAsync(new Uri("https://www.google.com/Program.exe"),Application.StartupPath);
        MessageBox.Show("Yes");
    }

当我尝试运行程序时,出现以下错误:
错误1:
Could not copy "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Exceeded retry count of 10. Failed.

错误2:

Unable to copy file "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Could not find file 'obj\Debug\Program.exe'.

还有大约10个同样信息的警告:

   Could not copy "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Beginning retry 1 in 1000ms. Could not find file 'obj\Debug\Program.exe'. 

然而,一旦我删除了if语句中的else子句,程序就可以执行而不出现任何错误。显然,else子句中的下载代码导致了问题,但我不确定原因。我曾在不同的事件中使用相同的代码,并且它能够完美地运行。感激任何帮助。
我已经尝试过:
  • 关闭并重新打开Visual Studio
  • 删除bin文件夹中的所有文件,然后重新构建。
  • 使用Process Explorer检查文件是否被锁定
  • 手动以管理员身份运行VS
  • 删除bin和debug文件夹
  • 重启计算机并将项目移动到其他文件夹

1
你需要确保文件没有被使用。 - SLaks
2
关闭并重新打开Visual Studio。 - TheLethalCoder
1
@EJoshuaS 是的,我试过了,文件没有被锁定 :/ - Harry
1
你需要关闭应用程序,右键点击VS并选择以管理员身份运行,这样就可以解决问题了。在MSDN网站上还有一些关于如何在启动时以管理员身份运行的文档。 - MethodMan
尝试将其复制到另一个文件夹中,然后查看是否有效,这样做不会有害。 - MethodMan
显示剩余21条评论
4个回答

2

只需按照下图所示以管理员权限打开Visual Studio。

enter image description here

如果遇到问题,可以尝试以下方法,在关闭应用程序后退出所有进程,以免出现其他问题。

在主窗体或MDI窗体的Closing事件中添加Application.Exit(),如下所示:

Private Sub frmMain_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Application.Exit() End Sub

请尝试以上方法,相信您会找到解决方案。


0

我确定你没有从正确的bin文件夹中删除文件。打开任务管理器,查找名为Program.exe的任何程序。验证进程从哪里运行打开文件位置

终止Program.exe并尝试重新构建。如果成功,则将bin输出路径映射到此位置。

仔细查看错误消息: 无法将文件“obj\Debug\Program.exe”复制到“bin\Debug\Program.exe”。 找不到文件'obj\Debug\Program.exe'

您是否配置了任何PostBuild步骤来复制文件?如果是,请删除它。

还要编辑您的.csproj文件并搜索'obj\Debug',如果有任何匹配项,请删除并重试。

更高级的故障排除:

使用进程监视器并过滤VisualStudio和路径的进程。请参见下面的屏幕截图。

enter image description here

重新构建您的项目,并调查分析日志,了解为什么它正在尝试复制Program.exe文件。

enter image description here

添加/删除更多的过滤器,以查看为什么正在尝试复制Program.exe。还要查找Result列中的任何错误。


1
我已经尝试过了,但没有成功。问题在于'obj\debug'文件夹没有生成Program.exe,因此无法复制到bin文件夹中。我不确定为什么它不起作用。 - Harry
1
这不是问题。我经常遇到这个问题,发现以管理员身份运行可以解决这个问题。 - MethodMan
打开任务管理器并停止该应用程序的所有实例/Visual Studio,以管理员身份重新打开,确保在VS的标题中显示“Microsoft Visual Studio(管理员)”,如果您在调试器外运行时遇到实际问题,则可能存在一些内存泄漏/未正确释放资源。请重新编译应用程序。 - MethodMan
@vendettamit 感谢您编辑的帖子。那是一个新的解决方案,但不幸的是它没有起作用。我没有 postbuild,并且在我的 cs 项目文件中找不到 'obj\Debug'。 - Harry
请查看进一步的步骤以进行调查。希望这能为您提供错误来源。 - vendettamit
显示剩余3条评论

0
我自己解决了这个问题。在尝试了许多对其他人有效但对我无效的不同解决方案后,我尝试查看同时运行的不同进程,尝试执行该程序。问题出在Avast上。我关闭了Avast杀毒软件,它立即解决了这个问题。由于某种原因,Avast甚至没有显示每次删除程序时的任何消息。我的程序存在现有问题,即部分AV(2/72)将其检测为病毒。这与我的代码结构有关。谢谢大家的回答 - 它对其他遇到类似错误的人应该有用。

-1

我曾经遇到过同样的错误,后来意识到是因为我已经运行了该项目,因此在关闭它并重新构建后问题得到解决。


嗨。这并没有真正回答问题或帮助未来的访问者解决他们的问题。 - Kyle Williamson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接