我在MS Visual Stdio中一直收到以下错误:
无法复制文件" obj \ Debug [Program] .exe" to" bin \ Debug [Program] .exe"。该进程无法访问文件&bin; \ Debug [Program] .exe'因为它正被另一个进程使用。
在关闭和/或停止调试器后,这会随机发生。该程序已关闭,但VS保留了一些对该程序开放的句柄。
我发现能够重新调试的唯一方法是关闭Visual Studio,然后重新打开它,这非常烦人。
知道为什么会这样,以及如何在没有先关闭它的情况下再次运行调试器?
这发生在2013年Ultimate和2015 Ultimate。
感谢。
答案 0 :(得分:4)
我将提出一个新的解决方案,永久修复它。我总是这样做,当遇到“调试器”问题时,主要是在迁移到带有旧解决方案的新Visual Studio时,所以你的里程可能会有所不同。
如果切换回AnyCPU配置允许您再次调试,那么我相信以下步骤将解决它。
进入“配置管理器”,将“活动解决方案平台:”更改为任意CPU,再次单击向下箭头,然后选择“编辑...”,在此处删除任何自定义条目,即使它只是x86和x64。
在同一个窗口中,输入项目下的平台并重复步骤1.删除除AnyCPU之外的所有条目。
关闭Configuration Manager。
转到“构建”菜单,然后单击“清洁解决方案”。
以管理员身份重新启动Visual Studio 2015 CTP 5。打开你的解决方案对一个构建,发布或调试使用“任何CPU”,然后关闭它。只需验证您是否能够基本上使用“任何CPU”目标。
最小化Visual Studio,进入您的解决方案并清理所有的Bins / Release和Debugs,包括任何x86 / x64 Release / Debug文件夹(如果它们仍然存在)。
最大化Visual Studio,进入配置管理器,重建平台目标(x86 / x64)从已验证的工作中复制设置:“任何CPU”。
快乐地再次开始工作!
错误是由解决方案/项目中保存的错误,过期或损坏的“目标平台”设置引起的。您可以重复上述步骤,再次删除项目解决方案下的“任何CPU”设置,因为它也可以在那里缓存坏的juju。使用术语“任何CPU”设置复制设置“空设置”再次添加它也可以解决问题。然后,您想删除其他所有内容,并使用新的Any CPU设置将其重新添加为x86 / x64。
决定在我的blog/site上制作插图方法。
现在,如果您只将“任何CPU”作为配置作为问题,那么有三件事可能会导致这种情况。需要刷新,打开流的“任何CPU”设置可以等于打开句柄,或者可能是StackOverflow异常,但尚未溢出。
如果“Any CPU”出现这种情况并且您没有其他目标解决方案,则可能首先要尝试此操作。添加一个新的平台目标,x86 / x64,从任何CPU复制设置都没问题。这将允许您从Configuration Manager和解决方案中删除任何CPU。然后,您可以添加一个名为Any CPU的新解决方案,其中包含“空设置”作为设置选项。然后删除x86 / x64。这会强制刷新项目中的Any CPU配置。尝试一两个版本。
如果它仍然存在,如果与“任何CPU”一起发生,您很可能需要重新访问代码。这可能是一个糟糕的流/未封闭的流问题,一个挂在系统中的糟糕的COM调用等。每当我尝试使用非托管代码或系统进程时,我都会尝试处理应用程序挂起和StackOverflows。如前所述,这可能正在发生。
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException +=
new ThreadExceptionEventHandler(Application_ThreadException);
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
MessageBox.Show("Congratulations, you have broken this program like no other user before you!\n\n" +
"Exception : " + ex.Message + "\n\n" + "Stack : " + ex.StackTrace,
"Ridonculous Exception Occurred", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
try
{
MessageBox.Show("This is a StackOverflow Exception!\n\n" +
"Exception : " + e.Exception.Message + "\n\n" + "Stack : " + e.Exception.StackTrace,
"Ridonculous StackOverflow Exception Occurred", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
来源:http://tech.pro/tutorial/668/csharp-tutorial-dealing-with-unhandled-exceptions
或者:如果您安装了多个Visual Studio,甚至预览了Vstudios,您可能会在不知不觉中通过来回切换或运行更新来破坏JIT。 Visual Studio的最新版本实际上会告知您JIT错误(可能与否),并建议您修复IDE。
其他任何事情,都超出了我的知识水平。祝你好运!
答案 1 :(得分:2)
RagingCain有一些出色的解决方案。如果所有其他方法都失败了,则会出现以下情况:
之后,它应该重新编译。
答案 2 :(得分:1)
项目属性 - 禁用Visual Studio托管过程。
为我工作。