一个C#桌面应用程序(在Visual Studio Express版上)工作了,但5秒钟后就不工作了。

我尝试了以下方法:

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

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


我想在这里补充一点,当我回来回顾这个问题时,主要是为了我自己,即在加载程序集之前不会加载符号,并且在需要时才会加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且它将显示断点未命中)。


当前回答

这花了我一段时间尝试了上面的其他选项,由于某种奇怪的原因,调试停止了。

工具->选项->调试->常规->(取消勾选)“要求源文件与原始版本完全匹配”选项

其他回答

使用依赖注入,在我的例子中是Autofac,通过扫描程序集自动解析。未解析其中一个引用的程序集。

我的修复方法是直接引用程序集中的类以强制Visual Studio加载程序集。当应用程序运行时,仅将程序集作为引用不会加载程序集。

我的经验是尝试远程调试我部署到AWS服务器上的web应用程序。问题是,当我部署到服务器时,它会编译并创建exe和pdb文件。但是本地编译的exe和pdb文件与服务器上部署的文件不匹配,因此当我连接到远程进程,然后尝试在Debug/Windows/Modules中为我的项目的DLL加载符号时,它会找到本地pdb文件,我会收到一个错误“pdb不匹配图像”

因此,在尝试了以上所有建议后,这是我为使断点工作所做的工作:

连接并登录到远程web服务器。转到保存exe和pdb文件的文件夹。在我的例子中,它是C:\inetpub\AspNetCoreWebApps\app。复制该文件夹中的*.pdb文件。将pdb文件粘贴到您的本地计算机上,在那里查找项目的pdb文件。您将在Debug/Windows/Modules中找到路径,右键单击DLL并选择Symbol Load Information。。。现在您可以使用调试/附加到进程。。。要附加到远程进程,它应该加载符号,因为pdb现在与远程exe文件匹配。

完成远程调试后,可以重建项目以恢复当前的pdb文件,以便在本地进行调试。

可能可以向符号路径列表中添加一个路径,以便从远程服务器加载pdb,但如果有,我还没有找到它。这可能比简单地将pdb文件从远程服务器复制到本地VS环境更麻烦。

项目财产(然后选择构建配置)>构建选项卡>高级…>调试信息(下拉列表)

设置为“all”或“pdb only”,然后重新生成

我的问题是aspx、aspx.vb和aspx.designer.vb文件导入错误(可能是一个接一个地导入到项目中)。

断点位于aspx.vb中,但无法访问,并显示此问题的警告。

解决方案是删除这三个文件并再次导入它们。现在我可以到达断点了。

我尝试了上面提到的一切,但都没有奏效。[清洁解决方案,并检查PDB文件等]

即使发布相同的解决方案,也无法解决问题。

然后我回到了我通常要做的事情(愚弄这个顽固的Visual Studio)

我所做的只是在代码中进行了一次有意的更改,并发布了解决方案。然后我恢复了更改并再次发布。

Voila[PDB文件消除邪灵]。。这不是一个明智的解决方案,但这确实奏效了-|