Visual Studio C# 应用程序无法使用调试信息进行构建

Visual Studio C# app won't build with debugging info

我的 C# WPF 应用程序无法使用 Visual Studio 2017 加载符号文件。我已经在线查看并检查了常见问题,但无法调试我的应用程序。这是新行为。它作为多项目解决方案的一部分一直在工作(至少几个月前)。我不知道发生了什么变化。

我在 Main() 之后设置了一个断点,它一直显示红色,直到我尝试在调试配置中 运行。由于断点没有停止执行,我明确地中断了。

[STAThread]
static int Main(string[] args)
{
    Application.EnableVisualStyles();   // breakpoint on this line
    Application.SetCompatibleTextRenderingDefault(false);

    Debugger.Break();

现在 运行ning 时,弹出 "Symbol file not loaded" 并显示 "Binary was not built with debug information"。

检查 "Active (Debug)" 配置项目属性,在“构建”窗格中,我看到

[x] Define DEBUG constant
[x] Define TRACE constant
[ ] Optimize code

并在“高级构建设置”对话框中

Debugging Information: Full

运行 Build->Clean,然后 Build->Rebuild,我看到 app.exe 和 app.pdb 文件都是在 bin/Debug/ 目录中新创建的。删除 bin/ 和 obj/ 目录并重建时,尝试调试应用程序时仍然出现相同的错误。

当我查看调试输出以及各种加载的 Windows DLL、加载的符号时,我看到我的应用程序带有 "Modules was built without symbols."

从 Debug->Windows->Modules window 我看到我的应用程序带有 "Optimized: No" 和 "Symbol Status: Binary was not built with debug information." 在同一个 window 中,我是对的-单击我的应用程序,选择 "Load Symbols" 并选择 bin/Debug/app.pdb 文件。它说,"A matching symbol file was not found in this folder"。

我快要疯了,想弄清楚这个问题。它似乎应该使用调试信息构建,但事实并非如此。谁能指出我正确的方向?

I'm going mad trying to figure this one out. It seems it should be built with debug information, but it isn't. Can anyone point me in the right direction?

这是一个很奇怪的问题。我想你可以试试这些建议

建议

1)请检查Assembly Name(右击project-->Application)是否有空格,如果有,应删除空格并重建再次测试它。

2) 启用 Define DEBUG constantDefine TRACE constant 右键单击项目-->构建.

3)工具-->选项-->调试-->常规

4)检查你的xxx.csproj文件是否有<DebugType>full</DebugType>节点。如果没有,您可以将其添加到 xxx.csproj:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
  <DebugType>Full</DebugType>
</PropertyGroup>

5)关闭VS Instance,删除解决方案文件夹下的.vs隐藏文件夹,bin和obj文件夹。然后重新启动您的项目以再次测试。

6)如果你安装了多个nuget包,你可以运行工具-->Nuget包管理器-->Nuget包控制台下的这个命令:

update-package -reinstall

7) 在工具-->扩展和更新下禁用任何第三方扩展,以防某些扩展导致此行为。并且不要忘记重启 VS。

8)如果你的VS有最新更新,请及时更新

另外,

如果新建的wpf VS2017工程可以调试成功,而你的wpf工程是旧VS版本的旧工程,建议你在VS2017新建一个wpf工程,然后将旧工程迁移到新工程中测试磨刀。

您可以将旧项目中的 packages.config 文件复制到新项目的根目录中,然后 运行 update-package -reinstall 将这些包自动引用到您的项目中。

期待任何反馈。