22

我有一个包含四个 C# 项目的 Visual Studio 解决方案。我想从我的主项目进入解决方案中支持项目的代码,但是当我使用“Step into”键时,它只是跳过对另一个项目的调用。我在支持项目中设置了断点,它们被忽略了,而且我一辈子都无法让它进入对该项目的任何引用。

一切都设置为编译为“调试”,我已经看到 Visual Studio 警告我之前不会命中我的断点 - 在这种情况下它不会这样做。就好像我的代码看起来会调试一样,但是在运行时,有一个设置告诉 Visual Studio 不要单步执行该项目中的代码。我的解决方案中的所有其他项目都可以毫无问题地调试。

我检查了哪个框导致这种行为?

更新澄清:“只是我的代码”选项目前被禁用。此外,由于代码属于我的同一解决方案中的一个项目,我认为“仅我的代码”选项在这里不适用。我以为它只适用于我没有源代码的预编译代码,但由于我的项目中有源代码,我认为这个选项没有任何效果。

4

7 回答 7

16

不确定是否是这样,但“工具>选项>调试>常规:仅启用我的代码”是可能的。(我更喜欢始终不选中它。)

于 2008-10-21T16:14:24.330 回答
14

事实证明,在调试之前需要将程序集复制到 GAC 中。在调试选项“只是我的代码”下,如果您没有任何用户代码,则有一个选项可以抑制错误,并且它正在抑制以下错误:

以下移动设备是在启用优化或没有调试信息的情况下构建的。(模块名称和路径)要调试此模块,请将其构建配置更改为调试模式。

由于我是在 Debug 配置中构建它,因此我搜索了该错误消息并得到了以下信息:

http://claytonj.wordpress.com/2008/01/04/the-following-module-was-built-either-with-optimizations-enabled-or-without-debug-information/

问题解决了。我不知道为什么它需要加入 GAC 才能让我进入该项目,但确实如此。我不问为什么,我只是问怎么做,然后我就做了......

于 2008-10-21T18:06:23.870 回答
7

要检查的一件事是您的支持项目程序集尚未安装在 GAC 中。打开命令提示符并运行以下命令以确保...

gacutil /l程序集名称

于 2008-10-21T16:16:55.823 回答
5

您需要确保支持项目具有 pdb 文件,否则 Visual Studio 将没有必要的信息来逐步执行代码。

于 2008-10-21T16:17:23.637 回答
5

如果您有尝试进入的 dll 的源代码,请执行以下操作:

  1. 单击添加这些 dll 作为参考的项目,然后将其删除。
  2. 将与 dll(s) 对应的 Project(s) 添加到解决方案中
  3. 右键单击项目 -> 添加引用 -> 选择新添加的项目。

现在设置断点并调试代码。您将能够单步执行代码。

问题的原因是您的程序仍在引用旧的 dll(没有源代码),因为它已作为参考添加到您的项目中。删除该 dll 并添加 dll 的项目(dll 的源代码)后,Visual Studio 将能够单步执行您的代码。

于 2012-03-23T19:31:02.147 回答
3

几种可能性:

  • 有一个复选框可以进入“只是我的代码”。它的目的是让您无法进入 Microsoft 的框架代码(除非您选择取消选中该框)。

  • 您可以尝试重新编译支持代码,以确保您正在调试的代码与您正在查看的代码文件完全匹配。VS 确实关心这一点,如果您将断点放在版本不匹配的代码文件中,它将禁用断点。此外,请确保 PDB 文件与 DLL 位于同一目录中。

于 2008-10-21T16:21:38.793 回答
2

在 Visual Studio 2013 中,导致此行为的一种方法是将构建配置设置为Release.
把它放回去Debug看看是否有帮助。

在此处输入图像描述

于 2015-04-20T10:50:10.777 回答