【问题标题】:Step into a class library in asp.net using visual studio 2010使用 Visual Studio 2010 进入 asp.net 中的类库
【发布时间】:2012-06-18 20:53:02
【问题描述】:

我首先要说我已经搜索过 SO 并没有找到我的问题的答案。

我想在我的asp.net代码后面放置一个断点,当调用类库的方法或函数时,我希望能够单步执行类库代码。

我已将类库代码文件添加到我的 asp.net 解决方案文件中。

附加到进程不起作用(后面的类库代码没有出现)。我还确认了 pdb 文件存在于 \bin 文件夹中......根据这篇文章ASP.NET Class Library not hitting break points

这是我的流程截图:

对如何进入类库有任何想法吗?

【问题讨论】:

  • 你有类库的代码,还是只有程序集的引用?
  • 我已将类库代码添加到我的解决方案文件中。
  • 你应该有代码可以进入那个类库。
  • 你在发布吗?另一种方法是下面的最佳答案 - 在 IIS WebApp -> 高级设置 -> 允许服务器端调试。

标签: c# asp.net visual-studio-2010 class-library breakpoints


【解决方案1】:

你必须附加到 w3wp,asp 网站的工作进程,dll 应该在那里。

但是,如果直接引用代码,那么内置的 VS 调试器应该可以工作。你确定你在调试中运行吗?

【讨论】:

  • 我正在调试中运行。我的进程列表中没有看到 w3wp。
  • @DotNetRookie 在您运行代码一次之前,这不会显示。它需要启动。
  • aspnet_wp.exe 怎么样?这是同一件事的旧版本。
【解决方案2】:

如果您从调试中运行,您应该会在输出窗口中看到加载的类库和符号。寻找如下所示的内容:

'WebDev.WebServer40.EXE'(托管 (v4.0.30319)):已加载 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b2719ea1\480fba3f\assembly\ dl3\c439d1ec\8c571aed_7e45cd01\MyClassLibrary.DLL',已加载符号。

如果您看到您的类库正在加载,但最后没有说“符号已加载”,那么由于某种原因它没有找到 .pdb 文件。

另外,如果您从调试运行,您可以从“附加到进程”框中附加到 WebDev.WebServer40.exe。但您不应该这样做 - 如果符号已加载并且您正在运行在调试模式下,您应该能够在不显式附加到进程的情况下命中断点。

您能否在您的类库中没有的代码中设置断点?

【讨论】:

  • “你能在你的类库中没有的代码中打断点吗?”...是的
  • 从输出窗口(没有说符号加载..所以我如何确保找到 pdb?):'WebDev.WebServer40.EXE'(托管(v4.0.30319)):加载' C:\Users\aazzao\AppData\Local\Temp\Temporary ASP.NET Files\root\8770d266\36a71f3e\assembly\dl3\ca9f9930\12082593_6b49cd01\AutoCare.Libraries.Common.DLL'
  • 那可能是你的问题。重建解决方案时是否正在重建类库? .dll 和 .pdb 是否匹配?我会尝试删除 .pdb 并进行干净的重建,看看它是否会重新生成。
  • 另外 - 在解决方案属性下的 Common Properties\Project Dependencies 下,确保您的主网站依赖于您的类库。
  • 您是否仔细检查了参考资料?是否有可能它没有从 bin 文件加载 .dll,而是引用了不同/旧版本?
【解决方案3】:

确保选中“显示所有用户的进程”,然后附加到您网站的 w3wp 进程。

【讨论】:

  • 我在“附加到进程”列表中没有看到 w3wp 进程(选中显示所有用户的进程)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多