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

我尝试了以下方法:

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

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


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


当前回答

通常,我们的应用程序在工作时会引用特定公共/app目录中的.dlls,例如C:\OurCompanyApps\xxxxxx.dll。这是在一个包含大量WinForm和.dll项目的解决方案中发生的。.dll项目会编译到C:\OurCompany apps\,WinForm项目会引用该位置中编译的.dll文件。

问题:我发现有问题的应用程序引用的是源代码管理bin\Debug位置中的.dll项目,而不是C:\OurCompanyApps中编译的.dll文件。

解决方案:我删除了引用,并从C:\OurCompanyApps\位置重新添加了它。然后我可以逐步通过我在.dll代码中添加的断点。

其他回答

我设置了一个断点,在执行代码时在该断点上得到了这条消息。但是,断点只能由单元测试访问。我必须右键单击单元测试并选择“调试单元测试”Doh!

选定的答案使我解决了问题。但我还需要做一些事情:

即使在下拉列表中选择了“调试”:

在项目财产>构建中:

Visual Studio未将符号加载到特定项目。因此,在下拉列表中,我选择了“Configuration Manager”,并看到我的web项目的设置不正确:

然后我将其设置为“调试”,并开始生成.pdb文件。但我需要手动复制PDB和DLL,并将其放入VS正在查找的文件夹中(以下是所选答案对我的帮助):

要停止调试器的.dll以及相关的.pdb文件复制到.exe文件附近。这些文件的日期较早,因此我认为它们不会在运行时更新。我手动删除了它们,VisualStudio创建了另一对,并将此新对放在.exe附近。现在断点开始工作了!

可能Visual Studio无法复制和替换.exe附近的现有文件(.dll和.pdb),因为那里还有另一个文件。所以,如果我手动删除,那么VS可以在.exe附近创建一个新的。

我认为问题的根本原因是Visual Studio在运行时使用了另一个文件,而不是项目中的文件,并停止了。

对于ASP.Net应用程序,请检查网站的ASP.Net选项卡的财产。确保选择了正确的ASP.Net版本。

在我的例子中,问题出在web.config文件上。

它是<compilation debug=“false”strict=“true”

我把它改成了

<compilation debug=“true”strict=“false”。现在我可以调试应用程序了。