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

And*_*aló 11 .net c# dll build visual-studio-2010

我通过项目属性为我的.dll项目设置了一个输出文件夹,我称之为"输出".

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

错误328无法将文件"obj\Release\MyLibrary.dll"复制到"......\Output\Release\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上.我感谢任何有助于我调查为什么会这样的想法.

Han*_*ant 15

vshost.exe是Visual Studio Hosting进程.它是一个自定义CLR主机,可以加载EXE并使调试更容易.你可以把它关掉,这种副作用很少."项目+属性","调试"选项卡,取消选中"启用Visual Studio主机进程"选项.

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

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

反恶意软件值得一提的一个共同的祸患,他们得到的方式,当他们看到一个可执行文件不知从何处出现过于兴奋.如果你使用Avast然后完全卸载它,它与VS非常不兼容.

  • 它通过在使用dll的可执行文件的项目中取消标记"启用Visual Studio宿主进程"来解决问题.谢谢你的回答. (3认同)