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

我尝试了以下方法:

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

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


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


当前回答

我最终得到了一个文件的两个副本,其中包含相同的类。这两个副本都在Visual Studio中打开,但它们有不同的文件名,其中一个实际上包含在项目中,另一个则没有。

确保正在设置的断点位于解决方案/项目实际正在编译的文件中。没有未编译文件的符号。

其他回答

在我的案例中,这是在Windows更新之后开始的,结果是Windows更新关闭了Internet信息服务,这使得我的API似乎无法达到我设置的断点,但实际发生的是IIS无法启动,因此我的应用程序代码实际上没有运行。

再次检查Windows功能菜单中是否启用了Internet信息服务。

IIS说明:

控制面板程序打开或关闭窗口功能勾选互联网信息服务重新启动visual studio

如果使用IIS Express:

从旧控制面板中打开“添加/删除程序”,然后在IIS Express上运行修复程序,或者您可以转到“控制面板”->“程序”->“应用程序和功能”->“打开或关闭Windows功能”->Internet Information Services并检查父Internet Information Services文件夹。

我在这里得到了这样的答案:指定的参数超出了有效值的范围。参数名称:站点

我通过以下方式解决这个确切问题:

以管理员身份打开工作室使用构建->清洁解决方案使用Build->Build

我有一个blazor webassembly项目,从答案中几乎尝试了所有方法,但都没有奏效,解决方案是使用Chrome而不是Firefox,并且达到了断点。blazor-webassembly的文档中也有以下内容

Visual Studio需要“工具”>“选项”>“调试”>“常规”中的“为ASP.NET(Chrome、Edge和IE)启用JavaScript调试”选项。这是Visual Studio的默认设置。如果调试不起作用,请确认已选择该选项。

如果您的解决方案中有多个项目,则可能是您正在调试的项目/断点未设置为启动项目。在我的案例中,我正在从同一解决方案中的其他项目调用web服务,因此该web服务不是Startup project,brfeakpoint没有命中。我将ws设置为Startup项目,并启动了调用项目的新实例。这对我有用。

在我的案例中,我正在使用Visual Studio的Experimental Instance调试WPF扩展。在开始调试并暂停调试后,我打开了“调试”>“窗口”>“模块”窗口。在那里,我可以看到Visual Studio试图加载符号C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\15.0_76a9e536Exp\Extensions\<companyName>的目录。停止调试后,我使用Windows资源管理器删除了目标文件夹并重新启动了调试器。Visual Studio随后能够命中断点。