代码之家  ›  专栏  ›  技术社区  ›  Greg

Visual Studio不会调试到引用的dll(来自同一解决方案)

  •  11
  • Greg  · 技术社区  · 15 年前

    我有一个Visual Studio 2008解决方案,有两个项目。一个DLL,A和一个Web应用程序,B。

    b有对a的项目引用,a.dll和a.pdb将被复制到b的bin/目录。

    一切设置为在调试模式下编译。

    我可以运行cassini-webserver并调试Web应用程序b,但是当我调用a.dll中的方法时,按f11进入该方法并不进入该方法,而是跳过该方法。我想介入其中。

    你知道我为什么不能进入a的源代码吗?

    编辑:附加信息

    我没有检查“只是我的代码”。

    我可以在DLL中设置一个断点,它显示为一个红色的圆(不是空心的),但它永远不会被击中。

    六羟甲基三聚氰胺六甲醚。。。我刚修改了DLL中的代码,它被调用以

    throw new Exception("Hello");
    

    我也不例外。这很可疑…

    5 回复  |  直到 7 年前
        1
  •  18
  •   JaredPar    15 年前

    最有可能的问题是,Visual Studio不认为DLL是“您的代码”的一部分。解决此问题的方法是禁用“仅我的代码”调试功能。

    • 工具->选项->调试
    • 取消选中“仅启用我的代码”

    这样做之后,您应该能够毫无意外地进入您的代码。

        2
  •  4
  •   Greg    15 年前

    啊哈!

    我调用的b中的方法返回 IEnumerator<SomeObject> . 它是一个带有yield关键字的迭代器块,因此没有被执行(因为我还没有编写消费者)。

    叹息

        3
  •  3
  •   jKlaus    10 年前

    对于那些说禁用“仅我的代码”的人,他特别指出这两个项目在同一个解决方案中,因此这不适用。唯一合乎逻辑的结论是用户错误/误解。

        4
  •  2
  •   Matt Brunell    15 年前

    您可能在调试选项中设置了“仅我的代码”选项。关闭该选项,您可以从一个DLL单步执行代码。

        5
  •  0
  •   Phil Haselden    7 年前

    检查dll在其assemblyinfo.cs中是否有如下行。调试时,您可能需要临时注释掉该行,以便进入DLL。

    [assembly: AssemblyKeyFile("..\\..\\something.snk")]