调试 COM+ 应用程序(第二部分)
如何从 ASP、ASP.NET 和测试项目调试 COM+ 组件
引言
调试可能占据了开发者的大部分时间。这并不意味着我引入了太多的错误,而是调试主要用于代码增强、业务开发或向新技术过渡。由于这是 .NET 和 COM+ 的第二部分,我们将重点关注调试方面。
背景
在第一部分中,我解释了如何将 .NET COM+ 组件与 ASP 应用程序一起使用。
开始吧
现在有很多调试方法,每个人都根据自己的偏好和舒适度选择工具。 Visual Studio 2005 开辟了一种新的调试方式,无需离开 Studio。它并不是真正的新东西,并且与 nUnit 开源代码非常相似。
进程内库很容易调试,因为代码在同一个进程中运行,并且步入(或 F11 功能键)可以带您进入服务器端代码。对于组件,有很多令人困惑的选项,例如使用 devenv 或 iexplorer 等调试,或者附加到进程列表中的哪个进程。
让我们看看调试 .NET 服务器组件的各种可用选项以及如何调试该组件。
测试项目
测试项目是一种非常酷的调试方式,无需退出 Studio,并且在 Visual Studio 2005 中可用。打开您的解决方案并右键单击解决方案,然后选择添加新项目。选择项目类型作为测试项目,您将看到一个测试类被添加到测试项目中,其中包含一个测试方法。您可以在此处添加您的测试代码,我建议为要测试的组件的每个方法至少创建一个测试方法。
测试方法通常具有一些参数初始化,然后是创建类对象和调用类方法的行。
如果您的组件已启动,您可以通过单击调试菜单,然后选择附加到进程选项来选择要调试的组件,如下图所示。您可以选择复选框以查看所有用户的所有进程以及所有会话中的所有进程,如果您正在调试自己的会话,则可以取消选中这两个复选框。
将显示正在运行的进程列表。为您的组件选择 *dllhost.exe* 条目,如果您不确定您的组件进程,请打开组件服务,并在正在运行的进程下,您将看到带有进程 ID 的组件。如果组件尚未启动,那么它将不会出现在正在运行的进程中,在这种情况下,通过右键单击组件,然后在 COM+ 应用程序中选择启动来启动进程。我将把 *dllhost.exe* 留到另一天解释,您需要知道您的组件托管在 *dllhost* 中。
就是这样,打开您的服务器组件项目并设置断点。从测试资源管理器窗口中,选择测试方法并单击调试方法。
我有时会等到 createobject
创建对象后才附加到进程,因为到这个时候,组件已经启动,您可以在进程列表中看到该进程。
另一个调试选项是创建一个测试/真实的 Web 应用程序:您迟早会想要使用 Web 应用程序进行测试,以测试集成或日常维护。
这里的过程类似于测试项目,如果您有 ASP.NET 应用程序,则该过程与测试项目完全相同;两者都是 .NET 项目,因此调试是相同的。
如果您有 Visual Interdev 6.0 项目,您仍然可以通过单击调试菜单并选择“进程…”选项来附加到进程。
这里有一个小秘密。您可以使用 Visual Studio 2005 打开 Visual Interdev 6.0 解决方案,只需几个简单的步骤,我希望你们大多数人都可以弄清楚,否则请提出您的要求,我很乐意将其整合在一起。使用带有 ASP 应用程序的 Visual Studio 2005 要好得多,您可以使用 VSS(或尝试 Team System 源代码控制)。
我主要使用 Visual Studio 2005 工作,我记得使用 Visual Studio 2003 进行调试应该是一样的。 如果我遗漏了什么,请告诉我。
历史
- 2007 年 7 月 19 日:首次发布