vshost.exe一直在访问我的.dll,我在构建它时无法更新它

时间:2013-10-29 15:33:32

标签: c# .net visual-studio-2010 dll build

我已经通过Project Properties设置了我的.dll项目的输出文件夹,我称之为“输出”。

问题是,从一个空的Output文件夹,我第一次构建项目时,没关系。第二次,我收到以下错误:

  

错误328无法将文件“obj \ Release \ MyLibrary.dll”复制到   “...... \输出\发布\ MyLibrary.dll”。该过程无法访问   文件'...... \ Output \ Release \ MyLibrary.dll'因为正在使用它   通过另一个过程。

“另一个进程”是Visual Studio中的vshost.exe。由于它不断访问MyLibrary.dll,因此无法删除或替换,从而导致错误。这样可以保持Output文件夹上的MyLibrary.dll不会更新。但是我在我的解决方案中有其他.dll项目,但这不会发生。

到目前为止我用来更新它的解决方案是关闭VS(从而关闭vshost.exe),然后运行.bat文件,删除文件Output \ Release \ MyLibrary.dll,然后再次打开VS重建它的项目。

我对vshost.exe的作用知之甚少,所以我不知道从哪里开始从root中清除这个问题。我不知道为什么这会发生在特定的.dll上。我很感激任何有助于我调查这种情况的想法。

1 个答案:

答案 0 :(得分:15)

vshost.exe是Visual Studio Hosting进程。它是一个自定义CLR主机,可以加载EXE并使调试更容易。你可以把它关掉,这种副作用很少。 Project + Properties,Debugging选项卡,取消选中“启用Visual Studio托管过程”选项。

您现在更有可能在程序中找到真正的问题。最常见的问题是,当您提出要求时,您的程序不会退出。您将仍然获得构建错误,您现在将看到自己的EXE被指定为锁定DLL的那个。您还将在任务管理器的“进程”选项卡中看到它。这也允许你杀死它。

我不清楚程序员如何重新创建这个问题。按Ctrl + F5而不是F5肯定会这样做,在启动程序时总是按F5立即附加调试器。使用Debugger + Stop Debugging现在可以可靠地停止程序。否则,您可以使用Tools + Attach to Process来稍后再次附加调试器,以了解您的程序正在执行的操作。

反恶意软件是值得一提的常见祸害,当他们看到无处不在的可执行文件时,他们会感到兴奋方式。如果你使用Avast然后完全卸载它,它与VS非常不兼容。