Express 版上的 C#桌面应用程序。工作,然后在 5 秒钟后不工作。
我尝试了以下方法。
我在解决方案中有两个 WinForms 项目。其中一个加载调试信息,一个不加载。它们都引用我正试图以相同方式在项目文件中获取调试信息的程序集。有任何想法吗?
我想在这里添加内容,主要是为我自己添加,当我再次回顾此问题时,直到加载程序集后才加载符号,并且直到需要时才加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且将断点显示为未命中)。
到达断点或使用Debug > Break All
,立即开始调试,使用Debug > Windows > Modules
。您将看到加载到流程中的所有程序集的列表。找到您要获取调试信息的那个。右键单击它,然后选择 “符号加载信息”。您将看到一个对话框,列出所有在其中查找程序集的. pdb 文件的目录。对照实际的. pdb 位置验证该列表。确保没有找到旧的。
在普通项目中,程序集及其. pdb 文件应始终由 IDE 复制到与. exe 相同的文件夹中。项目的 bin \ Debug 文件夹。如果您一直在使用它,请确保从 GAC 中删除一个。
首先尝试通过右键单击项目 > 重建来重建项目,如果这不起作用,请尝试清理项目(右键单击项目 > 清理)
如果这样不起作用,请检查以下内容:
(步骤 6 生成. pdb 文件,这些是调试符号)
只需尝试一下即可 - 您可能已经尝试过了。在解决方案资源管理器中右键单击解决方案,单击“干净的解决方案”,这将删除与解决方案关联的所有已编译和临时文件 。
重新生成解决方案,然后尝试再次调试。
我在解决方案中的多个项目的断点方面也遇到了麻烦 - 有些编译为 x86,有些编译为 x64。
在调试 / 常规设置中禁用 “仅我的代码” 选项。
选择的答案使我得以解决问题。但是我需要做更多的事情:
即使在下拉菜单中选择了 “调试”:
并在项目的 Properties> Build 中:
Visual Studio 并未将符号加载到特定项目。因此,在该下拉菜单中,我选择 “配置管理器”,并看到我的 Web 项目的设置不正确:
然后,将其设置为 “Debug”,它开始生成.pdb
文件。 但是我需要手动复制 PDB 和 DLL 并放入 VS 查找的文件夹中(这是所选答案对我有帮助的地方):
我可以通过简单地将 “附加到进程” 中的选项设置为 “自动确定要调试的代码类型” 选项来解决该错误,如随附的屏幕截图所示。
只需按照以下步骤操作:
Debug
> Windows
> Modules
以查看正在加载的模块,这使我朝着正确的方向前进。
在我的情况下,IIS Express 似乎正在从临时 ASP.NET 文件加载不同的 DLL。
解决方案?
C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
有时,即使它给您带来此错误, breakpoint
仍然会命中,因此只需忽略该错误即可。这在MVC web app
的Views
中经常发生。