【问题标题】:Build error: "The process cannot access the file because it is being used by another process"构建错误:“该进程无法访问该文件,因为它正在被另一个进程使用”
【发布时间】:2011-02-27 15:50:29
【问题描述】:

我有一个 C# webforms 应用程序,直到今天它一直运行良好。

今天突然,每次尝试运行应用程序时,都会出现文件锁定错误:

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

谷歌搜索错误并没有发现任何明显的问题,即 VS 认为文件已锁定。 绝对锁定文件的是 Visual Studio 本身,因为当我关闭 VS 并重新打开它时,项目执行良好 - 第一次。当我再次尝试运行它时,我得到了文件锁定错误。

每次我想运行应用程序时关闭 VS 并重新打开不是一个可行的解决方法!如何找出锁定文件的原因,并阻止它被锁定?

编辑:另一个有趣的发现:我什至不必运行该应用程序。只编译一次就会导致文件锁定;我不能连续编译两次!

此问题特定于我的解决方案中的一个项目。所有其他项目都可以正常工作,并且可以根据需要执行多次。只有这个项目自己被锁定了。

【问题讨论】:

  • 你可以尝试杀死 vshost.exe 看看是否有帮助?
  • @rene - 没有 vshost.exe 进程。他们在 VS 2010 中重命名了吗?
  • [应用名称].vshost.exe
  • @rene - 不,当前进程中没有显示该名称
  • @Shaul 您是否在表单中添加了自定义用户控件?在运行之前尝试关闭设计器:stackoverflow.com/questions/2690119/…

标签: c# winforms visual-studio-2010


【解决方案1】:

如果这是一个 SSIS 项目,则打开任务管理器并终止 DtsDebugHost.exe 的所有实例,这应该会释放锁定的文件。

【讨论】:

    【解决方案2】:

    我使用 Visual Studio Code 并收到此错误,因为开发服务器正在运行(我通过按 Ctrl + F5 运行开发服务器)。

    因此,我只需单击停止标志将其停止,错误就消失了。

    【讨论】:

      【解决方案3】:

      我在这个问题上挣扎了 5 天,可以通过事件查看器日志找到问题的根源; 端口 443,我试图访问的应用程序正在使用中,所以我不得不更改注册表设置;基本上,您将能够通过事件查看器中的错误日志找到问题的根源。

      【讨论】:

        【解决方案4】:

        我认为大多数回答的人都有些无能为力,并且通过反复试验找到了解决方案。我最近也遇到了这个问题,并查看了该线程中的各种解决方案,但它们没有多大意义。我查看了我的项目的 makefile(它是由我的项目负责人手工制作的),我在那里找到了 -j11。我用 -j1 替换了它,它解决了这个问题。预感是 make 可能在运行多个作业(线程)方面做得不好,即当一个线程在处理一个文件时,另一个线程正在尝试使用它。

        对于那些使用 IDE 编译代码的人,您需要寻找可以设置作业数量的构建属性,然后尝试在作业数量设置为 1 的情况下编译代码。您可能还必须关闭并重新启动 IDE(这完全取决于 IDE 的编程方式)。

        我知道这可能会妨碍您构建的性能,但在修复此错误(如果有,我没有费心深入研究)或 makefile 生成器变得足够聪明之前,可能没有其他选择防止这种情况发生。

        【讨论】:

          【解决方案5】:

          禁用我的防病毒软件简单地解决了问题。

          我几乎尝试了这个问题的所有答案,但不幸的是,没有一个答案对我有用。 突然,我的防病毒软件进入了我的脑海,我将其禁用,一切正常。之后,我将项目的路径添加到忽略我的防病毒列表中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-12-10
            相关资源
            最近更新 更多