【问题标题】:Breakpoints in .net core library will not be hit when debugging consuming WinForms app调试使用 WinForms 应用程序时不会命中 .net 核心库中的断点
【发布时间】:2019-08-16 23:32:43
【问题描述】:

我创建了一个示例来重现我在工作中遇到的问题,但问题就在那里。 我有一个 WinForms 项目的解决方案,目标是 .NET Framework 4.7,以及一个 .NET Core 库,目标是 .NET Core 2(也尝试了 4.6.1 / .Net Standard 2.0 组合,相同)

Form1.cs 看起来像:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(Helper.Method1(100).ToString());
    }
}

库代码:

public static class Helper
{
    public static int Method1(int a)
    {
        a = a + 1;

        return a; //breakpoint here
    }

}

我不能让 Visual Studio 从 .net 核心库中命中 Helper 中的断点(在这两种组合中都没有 - .net 框架与 .net 核心 NOR .net 框架 (4.6.1) 与 .net 标准(2.0))

我错过了什么?

我找到了一个Scott Hanselman's post on this,但是,如果我猜对了,所需要的是该库不标记特定框架,而是 .NET 标准之一(并且使用项目的目标框架符合该标准)。我似乎正在这样做。

【问题讨论】:

  • 不清楚你在问什么:代码没有破坏吗?或者您在单步执行时没有点击 Helper 类的 Method1 代码?运行前断点线上有没有红色实心圆圈?
  • @Jazimov:没有实心红色圆圈(在 VS 中“断点不会被命中”的意思),这就是问题所在。 JBSregath 的伎俩做到了。

标签: c# visual-studio .net-core .net-standard


【解决方案1】:

为了能够在 Visual Studio 中设置断点,它需要有信息文件(例如,您在 ./bin/Debug 目录中看到的 .pdb 文件),以帮助 Visual Studio 了解异常发生的位置,收集信息关于变量值,还有更多的东西。

除了实际的应用程序/库文件之外,还可以在此处相应地设置生成的信息量: 转到项目 > 属性 > 构建 > 高级(底部按钮)> 调试信息。

注意:这是不是解决方案范围的设置,需要为每个项目设置。 有关可选设置含义的更多信息:Advanced Build Settings Dialog Box

【讨论】:

  • 有时最简单的解决方案是最难找到的(隐藏在按钮/菜单后面)。小心! ;)
  • “检查”揭示了什么?您能否分享具体细节,以便其他人可以从您的发现中学习?
  • @Jazimov:透露 JBSregath 的答案就是解决方案。
  • 这根本没有帮助。它可能对您有所帮助,但没有人可以从他的回答中知道您具体发现什么有帮助。如果你不想分享,我不能强迫你,但不分享不符合 SO 的精神。
  • @Jazimov 我编辑了我的答案以提供更多信息,现在它不仅仅是一个“检查此设置”的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2013-08-09
  • 2010-10-18
  • 2020-05-29
  • 2010-09-08
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多