在VS2012 c#项目的构建过程中,我一直得到这个错误

Error   41  Could not copy "obj\Debug\WeinGartner.WeinCad.exe" to
 "bin\Debug\WeinGartner.WeinCad.exe". 
 Exceeded retry count of 10. Failed.    


Error   42  Unable to copy file "obj\Debug\WeinGartner.WeinCad.exe" to
"bin\Debug\WeinGartner.WeinCad.exe". The process cannot access the file
'bin\Debug\WeinGartner.WeinCad.exe' because it is being used by another 
process.    

现在我知道该终止进程了

Weingartner.WeinCad.vhost.exe

(有时)有用,但这让我很紧张。有办法阻止这一切发生吗?

调试器设置为


当前回答

使用Ms进程资源管理器查看是否需要在Windows 7中打开“应用程序体验”

在我的情况下,所有其他建议都不起作用(Windows 7, VS2019)

编译后,生成的. exe文件被重新锁定约一分钟。另一个奇怪的观察:当删除。exe文件时,它像往常一样消失在文件资源管理器中,但在刷新时(F5)重新出现。

您可以使用MS进程资源管理器来查找是否有任何进程持有生成的. exe文件的句柄。为此,查看进程资源管理器的“下窗格”,选择查看句柄而不是dll,并使用“查找”来搜索您的. exe文件。

这告诉我,这是Windows 7的“系统”进程,得到了一个句柄。exe。

一些研究显示,我必须打开Windows的“应用程序体验”服务(“自动启动”)才能永久摆脱这种奇怪的行为。


以下是更多信息: 在什么情况下,系统进程(PID 4)保留一个打开的文件句柄?

其他回答

我不能给出一个解决方案来防止这种情况发生,但你至少可以重命名锁定文件(windows资源管理器,或经典命令窗口),然后编译/构建。不需要重启VS201x。如果有一些经验,你可以添加一个预构建脚本来删除旧文件或重命名,以防出现锁。

对我来说,它是Avast反病毒,不让visual studio写入/读取/执行文件。所以我不得不将Visual studio 2010/2012文件夹添加到防病毒排除列表中。就在那之后……它的工作原理。

.vhost.exe是一个调试器进程,因此正在调试的进程似乎没有正确关闭。有可能你有一个错误,使它仍然存在,并且没有正确地停止调试进程——当你单击“停止调试”而不是实际杀死调试器时,有一些选项可以从进程中分离出来,所以也许你有这样的设置。

但这就是问题所在——你试图复制的文件被操作系统锁定(即仍在使用),所以它阻止了复制。确保该文件是免费的,您将能够复制。

我注意到一些答案可以解决我的问题,但是,以防有人有和我一样的问题。

如果你正在运行一个控制台应用程序:在你做任何其他事情之前。

确保您已经关闭了从以前的版本中打开的任何控制台窗口。例如,我只是在一个控制台应用程序中测试一些代码,我没有意识到以前运行程序时的控制台窗口是打开的。在我调试的过程中,窗口被推到后面,我看不到它。只是说,这可能是你的问题,所以检查确保这不是问题。

这个问题是查找以下错误时的第一个结果:

无法复制文件“…”,因为没有找到该文件。

在Visual Studio 2013(更新3)中构建时。

解决方案:卸载Visual Studio 2013中的“生产力工具”。

https://connect.microsoft.com/VisualStudio/feedback/details/533411