每当我调试我的程序时,我有时会遇到几个错误,要求我将磁盘插入驱动器E和驱动器F.这似乎与VS有关,寻找最初在这些上开发的第三方组件的来源驱动器,例如
如果我一直按取消,那么我的调试会话仍在继续,但这很烦人。我该如何阻止这种情况发生?
注意,我不尝试调试这些库,我已经启用我的代码'在选项/调试下勾选。
答案 0 :(得分:14)
这些DLL是在华盛顿州雷德蒙德的Microsoft构建服务器上构建的。 Microsoft通常会配置这些构建服务器以在F:驱动器上查找其源代码。例如,.NET Framework程序集是从f:\ dd构建的,“dd”是DevDiv,它是负责开发人员工具的Microsoft小组。在DLL内部,可以有一个部分包含DLL构建时DLL的PDB文件的位置。
Unity由Microsoft的另一个团队制作,称为“模式和实践”。值得注意的是使用相当差的做法。包含PDB位置的DLL中的该部分应该被剥离,就像普通的.NET Framework程序集一样。您可以从消息中看出它们不使用DevDiv使用的普通构建服务器。
所以你看到那个部分的内容,e:\ Builds是Unity最初找到的源代码。这就是调试器首先要再次找到PDB的地方。当然它不会找到它,你不是在那个构建服务器上调试代码:)这通常不会造成任何麻烦,调试器很快发现PDB不存在并继续搜索。首先查看符号缓存,然后从符号服务器下载PDB。
不幸的是,在您的机器上,E:驱动器实际上存在。但它处于不确定状态,驱动器号存在但实际上并未映射到功能驱动器。最常见的原因是您之前已将该驱动器映射到网络共享但网络连接不再起作用。或者未正确卸下的闪存驱动器。因此,当Windows看到某个程序试图访问该驱动器并生成一个低级别提示,让您有机会重新建立驱动器连接时,Windows会介入。它是臭名昭着的MS-Dos "Abort, Retry, Fail?"提示符的GUI版本。
你当然不想要这个。所以只需禁用驱动器,以便Windows让您安心。单击桌面上的“计算机”快捷方式,右键单击E:驱动器并选择(我忘记确切的命令)断开连接或禁用,以便驱动器消失。
如果这最初是一个映射的网络驱动器,最佳做法是遵循Windows建议,它从底部向上映射驱动器,从Z:驱动器开始。如果驱动器号有另一个来源(我认为有些机器将读卡器映射到该驱动器号),那么请在superuser.com上跟进,以了解如何摆脱这些非功能性驱动器映射。他们可能还会告诉你是否有办法彻底摆脱这个提示,应该有一个。
答案 1 :(得分:1)
我发现关闭解决方案并删除.suo文件会在我遇到这种情况时起作用。虽然我通常不会得到有关特定DLL的评论,但只是驱动器,所以这可能不是完全相同的问题。