【问题标题】:Visual Studio not stepping into same-project constructorVisual Studio 没有进入相同项目的构造函数
【发布时间】:2012-07-18 00:29:46
【问题描述】:

我正在尝试调试一些代码,因为一个类在调用时会引发异常。
代码是:

    public TrackingStrategy1(string Name, RobotGeometry geometry)
    {
        trackSystem = new TrackSystem(geometry, Name);
    }

调用(在同一个项目中):

    public TrackSystem(RobotGeometry geometry, string Name)
    {
        finder = new FindModel(geometry);  //breakpoint inserted here fails
        finder.InitModel();

        finder.useGPU = false;
    }

我收到异常“找不到方法:TrackSystem.FindModel..ctor(RobotGeometry)。但是,此时插入的断点不会被命中。如果我注释掉新行,我会在下一行得到相同的异常。

FindModel 在解决方案中包含的另一个项目中被引用,我已多次重新引用该项目,然后进行了重建。

为什么 Visual Studio 不会在此构造函数中插入的断点处停止?

【问题讨论】:

  • 这是什么语言? C#?这绝对不是 C++。
  • @AndreyT:预先标记为 C#。它也可以是 Java,但 Visual Studio 2010 的标记表明它是基于函数签名语法的 C#。
  • 我是否将其标记为 C++?我一定是半睡半醒。 C# 是正确的。
  • 如果您收到错误“未找到方法”,那么您的真正问题是构建损坏。 FindModel 在单独的项目中?您可能应该确认bin 文件夹中的程序集都是最新且正确的。

标签: c# visual-studio-2010


【解决方案1】:

在加载每个类之前,Visual Studio 会检查所有外部 dll 方法调用是否存在。
因为这发生在构造函数被调用之前,所以构造函数中的断点永远不会被调用。

在这种情况下,失败的原因是 2 个不同的项目引用了不同版本的 FindModel - 并且在构建中使用了该项目的错误版本。

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多