【问题标题】:How to single step into a method on a type that's resolved during runtime?如何单步进入在运行时解析的类型的方法?
【发布时间】:2017-01-11 23:39:31
【问题描述】:

我有一个方法 1,它调用一个在运行时动态解析的类型的方法 2。该类型位于我拥有的引用程序集中。我在 method2 的调用上在 method1 中放置了一个断点,并且我在其 .cs 文件中的 method2 上有一个断点。我正在使用 Visual Studio 2015 更新 3 和 Resharper。 (我也有 CodeRush)。

我无法单步进入方法 2,也无法执行方法 2。在单步进入方法 2 之前,调试器单步执行到下一行。 ctrl-alt-click on method2 显示“未找到 method2 的实现”。 ctrl-click on method2 进入它的界面。

我想知道如何在调试期间闯入 method2。

【问题讨论】:

  • 如果您禁用/删除 Resharper 工具,然后使用 VS IDE“Step Into(F11)”调试您的应用程序,结果如何?是不同项目中的两个类方法还是同一个项目中的不同类文件?您真正创建了哪种应用程序,VC++/C#?是混合模式调试吗?您是否在工具->选项->调试下启用了“使用托管/本机兼容模式”?还请首先确保没有构建错误。
  • 我只使用 c#。两种模式都关闭。这不是混合模式。 method2 位于不属于解决方案的项目的类文件中。它的程序集被引用。
  • @Tony,如果你将这两种模式都禁用,结果如何?您是否确保在运行应用程序期间确实调用了第二类方法?您可以在引用类中输出某些消息,并访问输出结果。至少,我们知道它是否被调用。也许你忘记设置 dll 引用属性“copy local=True”或其他。
  • 如果您使用项目引用而不是程序集引用,这个问题会怎样?请检查真正加载程序集的调试模块窗口:stackoverflow.com/questions/654696/… 和social.msdn.microsoft.com/Forums/en-US/…,并确保所有项目都使用相同的 .NET Framework 版本。如果您有任何最新信息,请随时告诉我。
  • 目前我已经没有这个需求了,当有类似的情况出现时,我会尝试这些技巧。感谢您的提示。希望它能让其他开发者受益。

标签: c# visual-studio-2015 resharper visual-studio-debugging coderush


【解决方案1】:

(1) 在TOOLS->Options->Debugging 下取消勾选Require source files to fully match the original statement和Enable Just my Code。

(2) 参考汇编调试,请确保将dll文件和PDB文件都复制到引用它的项目输出(Bin\debug)路径中。

(3) 请在调试模式下检查它是否真的在Debug->Modules窗口下加载了这个程序集。

(4) 使用程序集参考中安装的项目参考也可以帮助您缩小此问题的范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2013-01-31
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多