当我调试我的项目时,我收到以下错误:
"无法将文件"obj\Debug\My Dream.exe"复制到"bin\Debug\My Dream.exe".进程无法访问文件'bin\Debug\My Dream.exe',因为它正被另一个人使用处理."
使用Process Explorer,我看到MyApplication.exe已经关闭但系统进程仍然使用它,尽管我之前停止了调试.每当我更改代码并开始调试时,它都会发生.如果我将项目复制到USB并进行调试,它运行正常.
为什么?我该如何解决这个错误?
我使用Window 7 Professional.使用Xp我从未遇到过这个错误.
我有3个C#项目A,B和C.A和B都引用C.对A和B的C的引用设置为"Copy Local",暗示在C之后构建到C.dll(在C的输出目录中) C),它被复制到A或B的输出目录(无论哪个编译)
我有2个解决方案,SA和SB.SA包含A和C,SB包含B和C.我启动了Visual Studio 2015的2个实例.我在一个实例中打开SA,在另一个实例中打开SB.
我发现如果我从SA开始调试(F5)A,然后(当A仍在调试时),从SB更改C并尝试编译SB,我收到一个编译错误,说明C.dll不能被覆盖,因为它正在被另一个进程(运行SA的devenv.exe实例)使用.
这对我没有意义,因为在将C编译为C.dll并复制到A的输出目录之后,Visual Studio应该释放对该文件的锁定.
我已经验证(通过SA中的Modules窗口)已加载的C.dll版本是已复制到A的输出目录的版本.
这开始于我昨天开始使用Visual Studio 2015(而不是Visual Studio 2013)时.
有没有人有任何想法?我目前的解决方案是通过CTRL-F5运行SA(无需调试即可启动),但是当我想同时在调试模式下运行SA和SB时,这会变得很烦人.
谢谢.
UPDATE
我做了一些研究,为什么"编辑并继续"功能可能会导致所描述的行为,并根据此页面https://msdn.microsoft.com/en-us/library/ms164926.aspx >编辑并继续允许一个在调试会话中进行源代码修改,并使结果生效,而不必停止调试,重新编译和重新启动调试会话(这是一个多么严重的问题).启用该功能后,Visual Studio可能需要随时重新编译任何相关DLL,以解释锁定.