一个C#桌面应用程序(在Visual Studio速成版/社区版上)工作了,但是5秒后它就不工作了.

我try 了以下方法:

  • 确保在所有程序集上设置了调试配置、调试标志和完整的调试信息.
  • 从我的整个机器上删除所有bin和obj文件夹以及与项目相关的所有DLL文件.
  • 从头开始重新创建导致问题的项目.
  • 重新启动.

我在解决方案中有两个Windows窗体项目.其中一个加载调试信息,另一个不加载.它们都引用我试图在项目文件中以完全相同的方式获取调试信息的程序集.有什么 idea 吗?


我想在这里(主要是在我回来复习这个问题时)补充一点,那就是在加载程序集之前不会加载符号,只有在需要时才会加载程序集.如果断点位于仅在主程序集的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且将断点显示为未命中).

推荐答案

开始调试,一旦到达断点或使用Debug > Break All,就使用Debug > Windows > Modules.您将看到加载到进程中的所有程序集的列表.找到您要获取其调试信息的计算机.在其上单击鼠标右键,然后 Select "符号加载信息".您将看到一个对话框,其中列出了它在其中查找程序集的.pdb文件的所有目录.对照实际的.pdb位置验证该列表.确保它不会找到旧的.

在普通项目中,IDE应始终将程序集及其.pdb文件复制到与.exe相同的文件夹中,即项目的bin\Debug文件夹.如果您一直在玩GAC,请确保从GAC中删除一个.

.net相关问答推荐

DI通过对象的接口而不是实际类型来解析服务

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

在接口内部声明 IEnumerable 而在具体类中声明 IList

如何将 Assembly.CodeBase 转换为 C# 中的文件系统路径?

如何调试 .NET 运行时中的内部错误?

在 .NET 反射中使用 GetProperties() 和 BindingFlags.DeclaredOnly

共享 AssemblyInfo 用于跨解决方案的统一版本控制

实体框架无法加载指定的元数据资源

序列化私有成员数据

什么是 project.lock.json?

是否可以更改 Winforms 组合框以禁用输入?

如何退出所有正在运行的线程?

X509Certificate 构造函数异常

一个接口是否应该继承另一个接口

从 OpenFileDialog 路径/文件名中提取路径

Linq to SQL - 返回前 n 行

嵌套的 Try/Catch 块是个坏主意吗?

如何从 WCF REST 方法返回自定义 HTTP 状态代码?

读取 XML(从字符串)并获取一些字段 - 读取 XML 时出现问题

带有嵌套控件的设计模式