我有一个Visual Studio解决方案,里面有四个C#项目。我想从我的主项目中进入解决方案中的支持项目的代码,但是当我使用“Step into”键时,它只是跳过对其他项目的调用。我在支持项目中设置了断点,它们被忽略了,我不能为我的生活让它进入任何对该项目的引用。
所有东西都设置为编译为“Debug”,我看到Visual Studio警告我之前我的断点不会被击中 - 在这种情况下它不会这样做。就好像我的代码会调试一样,但是在运行时,有一个设置,告诉Visual Studio不要单步执行该项目中的代码。我的解决方案中的所有其他项目都可以毫无问题地进行调试。
我检查了哪些框导致此行为?
更新CLARITY :目前已禁用“仅我的代码”选项。此外,由于代码属于同一解决方案中的项目,我不认为“仅我的代码”选项适用于此处。我认为它只适用于我没有源代码的预编译代码,但由于我的项目中有源代码,我认为这个选项没有任何影响。
答案 0 :(得分:14)
不确定是不是这样,但“工具>选项>调试>常规:启用Just My Code”是可能的。 (我更喜欢永远不加以控制。)
答案 1 :(得分:13)
事实证明,在调试之前,需要将程序集复制到GAC中。在调试选项“Just my code”下,如果您没有任何用户代码,可以选择禁止错误,并且它可以抑制以下错误:
以下手机也是建造的 启用或不启用优化 调试信息。 (模块名称和 路径)要调试此模块,请更改它 将配置构建到调试模式。
由于我在Debug配置中构建它,我搜索了该错误消息并得到了这个:
问题解决了。我不知道为什么它需要加入GAC才能让我进入项目,但确实如此。我不问为什么,我只是问如何,然后我这样做......
答案 2 :(得分:7)
要检查的一件事是您的支持项目程序集尚未安装在GAC中。打开命令提示符并运行以下命令以确保...
gacutil / l assemblyName
答案 3 :(得分:4)
您需要确保支持项目包含pdb文件,否则Visual Studio将无法获得必要的信息来逐步执行代码。
答案 4 :(得分:3)
有几种可能性:
有一个复选框可以进入“只是我的代码”。它的目的是使它不能进入微软的框架代码(除非你选择通过取消选中框)。
您可能会尝试重新编译支持代码,以确保您正在调试的代码与您正在查看的代码文件完全匹配。 VS确实关心这一点,并且如果将它放在版本不匹配的代码文件中,它将禁用断点。另外,请确保PDB文件与DLL位于同一目录中。
答案 5 :(得分:2)
如果您有要尝试进入的dll的源代码,请执行以下操作:
现在设置断点并调试代码..您将能够进入代码。
问题的原因是因为您的程序仍然引用旧的dll(没有源代码),因为它已作为参考添加到您的项目中。删除该dll并添加dll的Project(dll的源代码)后,Visual Studio将能够进入您的代码。
答案 6 :(得分:2)
在Visual Studio 2013中,导致此行为的一种方法是将构建配置设置为Release
把它放回Debug
,看看是否有帮助。