Visual Studio - 无法多次构建简单项目

3
当我尝试连续构建项目两次时,会出现以下错误。
Error 2 Unable to copy file "obj\x86\Release\iFileUploader.exe" 
to "bin\Release\iFileUploader.exe". The process cannot access the 
file 'bin\Release\iFileUploader.exe' because it is being used by another process.

如果我关闭 Visual Studio 并重新打开它,我可以再次编译一次,但只能编译一次。
我的项目托管在 Windows 网络共享上。服务器运行 Windows 2008 R2,我使用的是 Windows 7,并尝试将共享和文件夹权限设置为完全控制,但无济于事。
我甚至运行了 Unlocker 程序,并检查了 Windows 共享和存储管理器,以查看是否有任何程序在使用它,但没有!在这种情况下,我也无法删除文件,直到关闭 VS。
我是否遗漏了 Visual Studio 中的某个设置?!

更新

已移除所有防病毒/反垃圾邮件软件,禁用了防火墙.. 因此没有任何安全性。

已禁用“启用 Visual Studio 托管进程”。

一些方式上,Visual Studio 影响了不释放句柄的问题。

enter image description here

enter image description here


更新

另一个线程也遇到了完全相同的问题,但是这是几年前的事情!!

销毁由Visual Studio调试会话留下的无进程控制台窗口


更新

我将文件复制到本地,但并没有起作用。所以我创建了一个新项目,然后将所有代码复制到新项目中,现在它正在工作(并且文件存储在本地)。


它是一个服务吗?在编译项目时它是否正在运行?也许您的后构建脚本使其运行。 - luqi
我在我的工作电脑上遇到了同样的问题。我怀疑ForeFront防病毒软件是问题的一部分。你使用反病毒程序吗?你能关闭它,看看问题是否消失吗? - Martin Liversage
请查看问题中的更新评论。 - Christian
5个回答

1

检查您的防病毒程序是否正在使用它。

或者使用进程资源管理器并查找字符串“iFileUploader.exe”,看看谁在使用它。您可以轻松获取句柄并关闭它。


不是杀毒软件的问题,已经卸载并重新启动了电脑,但问题仍然存在。 - Christian
当您尝试终止句柄时会发生什么?您能够这样做吗?这可能是Visual Studio的错误。 - sarat
句柄与 Visual Studio 相关联,因此杀死它们会导致 Visual Studio 关闭。 - Christian
我认为重新打开不会重新建立到相同文件的链接。 - sarat

0

请确保您创建的StreamReader或StreamWriter实例已关闭流。

例如,我会在应用程序级别创建一个StreamReader / StreamWriter实例并将其设置为null

Class SomeClass
{
  public StreamWriter streamwrtFileToCreate = null;
  public FileStream fstreamFileStream = null
  public SomeMethod(string FileName, string FilePath)
  {   
    FileStream fstreamFileStream = new FileStream(@FileName + @FilePath, FileMode.Create);
    streamwrtFileToCreate = new StreamWriter(fstreamUpdateRpt);
    streamwrtUpdateRpt.AutoFlush = true;
  }
}

此外,如果您在创建 FileStream 实例时发布确切的代码示例,将会有所帮助。

但我实际上并没有运行程序。 - Christian
在我使用流(streams)时,我会使用 using () {} - Christian

0

即使您在using(){}中使用Stream,也不要声明一个新的StreamReader变量,例如不要这样做

using(StreamReader streamReade = new StreamReader)
{
  ..... // if you do you will run into that stream being locked
}
//Declare the StreamReader variable out side of the using and then within the using do something like this.

StreamReader streamReader = null
using(streamReader = new StreamReader()
{

}

好知道,谢谢。但这不是StreamReader的问题,只是一些Visual Studio的bug。一旦我将代码复制到一个新项目中,它就可以正常工作了。 - Christian

0

我在使用VS 2012 windows 7时遇到了这个问题。

根本原因是Avast杀毒软件。

解决方法是需要在使用C++控制台应用程序时禁用Avast。

(或者)

->进入Avast设置

->主动保护

->文件系统防护(自定义)

->取消勾选执行程序时扫描


0

几点需要注意:

  • 请检查您的Windows任务管理器中是否已经运行了进程iFileUploader.exe
  • 请确认没有其他人正在运行可能使用iFileUploader.exe的项目。

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