Visual Studio调试时出现“驱动器中没有磁盘”的错误。

7
每当我调试程序时,有时会出现几个错误提示要求我将磁盘插入E驱动器和F驱动器。这似乎与VS寻找最初在这些驱动器上开发的第三方组件的源代码有关,例如:
如果我不停地按取消,则我的调试会继续进行,但这很烦人。我该如何阻止这种情况发生?
请注意,我试图调试这些库,并且在“选项/调试”下勾选了“启用仅限我的代码”。

看起来你的项目在“正在加载…”消息中引用了那个路径。尝试将其移除。 - yogi
2个回答

14
这些DLL是在位于华盛顿州雷德蒙德的微软构建服务器上构建的。微软通常会配置这些构建服务器以在F:驱动器上找到其源代码。例如,.NET Framework程序集是从f:\dd构建的,“dd”是微软负责开发人员工具的DevDiv组。在DLL中,可能会有一个包含DLL构建时PDB文件位置的部分。
Unity由名为“模式和实践”的微软另一个组制作,以使用相当糟糕的做法而闻名。应该删除包含PDB位置的DLL部分,就像普通的.NET Framework程序集一样。可以从消息中看出,他们没有使用DevDiv使用的正常构建服务器。
因此,您正在查看包含该部分内容的e:\Builds DLL,其中最初放置了Unity的源代码。因此,调试器将首先查找PDB的位置。当然,它不会找到它,因为您没有在那个构建服务器上调试代码 :) 通常,这不会引起任何麻烦,调试器很快就会发现PDB不存在并继续搜索,首先查找符号缓存,然后从符号服务器下载PDB。

很不幸,在您的计算机上,E:驱动器实际上存在。但它处于未知状态,驱动器字母存在,但实际上没有映射到一个功能性驱动器。最常见的原因是您之前将该驱动器映射到网络共享,但网络连接不再有效。或者是未正确卸载的闪存驱动器。因此,当Windows看到程序试图访问驱动器时,它会介入并生成低级提示,以便您有机会重新建立驱动器连接。这是臭名昭著的MS-Dos“中止,重试,失败?”提示的GUI版本。

当然,您不想这样。因此,只需禁用驱动器,使Windows让您安心。单击桌面上的“计算机”快捷方式,右键单击E:驱动器,然后选择(我忘记确切的命令)断开连接或禁用,以使驱动器消失。

如果这个驱动器最初是映射的网络驱动器,最好遵循Windows建议,从底部开始映射驱动器,以Z:驱动器开始。如果驱动器字母来自其他来源(我认为有些机器将卡读取器映射到该驱动器字母),则请在superuser.com上跟进,了解如何摆脱这些无效的驱动器映射。他们可能还可以告诉您如何完全摆脱此提示,应该有一种方法。

1
我发现关闭解决方案并删除.suo文件可以解决这个问题。虽然我通常不会收到关于特定DLL的评论,只是驱动器,所以这可能不是完全相同的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接