How to use the Visual Studio .NET or Visual Studio 2005 native debugger to debug a Visual Basic 6.0 DLL when it is called from an ASP.NET application

Summary

This step-by-step article describes how to use the Microsoft Visual Studio .NET or Microsoft Visual Studio 2005 native debugger to debug a Microsoft Visual Basic 6.0 DLL when it is called from an ASP.NET application.

To debug Visual Basic applications, use one of the following methods:
  • Use the Visual Basic development environment.

    When you debug in the development environment, you use P-code. P-code is an interpreted language that permits you to debug in the development environment.

    -or-
  • Use the native debugger if problems do not appear when you debug in the Visual Basic development environment, but problems do appear in the compiled version.
This article describes how to use the second method to debug a Visual Basic 6.0 DLL that is being used in ASP.NET. You debug the DLL by using the same binary that the DLL runs with (not including any optimizations). This creates an execution that is easier to debug than the P-code that you receive when you debug in the Visual Basic development environment.

back to the top

Requirements


The following list outlines the recommended hardware, software, network infrastructure, and service packs that are required:
  • Microsoft Visual Studio .NET or Microsoft Visual Studio 2005
  • Microsoft Visual Basic 6.0
  • Microsoft Internet Information Services (IIS) 5.0 or later
This article assumes that you are familiar with the following topics:
  • Microsoft Visual Basic .NET or Microsoft Visual Basic 2005 syntax
  • Microsoft Visual Basic 6.0 syntax
  • Microsoft Visual Studio .NET or Microsoft Visual Studio 2005 environment
back to the top

Create the Visual Basic 6.0 DLL

  1. In the Visual Basic 6.0 IDE, click New Project on the Filemenu.
  2. In the New Project dialog box, click to select ActiveX DLL, and then click
    OK.
  3. On the View Menu, click Properties.
  4. On the Properties dialog box drop-down list, click Class1.
  5. Change the Name property to
    VB6Class.
  6. Add the following code to your class to create a public method in your class:
    Public Function showButtonValue() As Integer
    showButtonValue = 1000
    End Function
  7. On the Project menu, click
    Project1 Properties.
  8. Click the Compile tab, and then click to select No Optimization.
  9. Click to select the
    Create Symbolic Debug Infocheck box.
  10. Click the General tab, change
    Project Name to VB6DlltoCall, and then click OK.
  11. On the File menu, click Make VB6DlltoCall.dll.
  12. Click to select the Visual Basic 6.0 folder, and then click OK to save VB6DlltoCall.dll.

    Note Your Visual Basic 6.0 project is stored in the Visual Basic 6.0 folder.
  13. On the Project menu, click
    VB6DlltoCall Properties.
  14. Click the Component tab, click to select
    Binary Compatibility, and then click
    OK.
  15. On the File menu, click Save Project, and then click the Visual Basic 6.0 folder to save the class and project file.

    Note VB6Class.cls is the name of the class file that you debug. Therefore, you can just accept the default names.
  16. On the File menu, click Make VB6DlltoCall.dll.

    Note When you create the file a second time, you receive a message about overwriting the existing file. Permit the compiler to overwrite the existing DLL.
  17. On the File menu, click
    Exit to close the Visual Basic 6.0 project.
  18. Open the Visual Basic 6.0 folder that contains the DLL.
  19. Right-click the DLL, and then click to select
    Properties.
  20. Click the Security tab.
  21. Click the Add button.
  22. Type Computer Name\ASPNET, and then click Check Name to verify that you locate the ASP.NET account.

    Note Replace Computer Name with the name of your computer. The ASP.NET account is the user account that the ASP.NET worker process executes under. If you do not permit this account to execute your DLL, your class is not created, and it fails with an "Access Denied" error.
  23. Click OK.
  24. Verify that Read & Execute is checked for the ASP.NET account, and then click OK.
back to the top

Create the ASP.NET Project in Visual Studio .NET

  1. Start Visual Studio .NET.
  2. On the File menu, point to
    New, and then click Project.
  3. In the New Project dialog box, click to select Visual Basic Projects under Project Types, and then click to select ASP.NET Web Application under Templates.
  4. In the Location text box, type the project name as http://localhost/MyASPnetProject.

    Note In the project name, http://localhost creates the application on your local server.
  5. Click OK to create the project.

Create the ASP .NET 2.0 Project in Visual Studio 2005

  1. Start Visual Studio 2005.
  2. On the File menu, point to
    New, and then click Web Site.
  3. In the New Web Site dialog box, click ASP .NET Web Site under Templates.
  4. In the Location box, click HTTP, and then type the project name as http://localhost/MyASPnetProject.

    Note In the project name, http://localhost creates the application on your local server.
  5. Click Visual Basic in the Language box, and then click OK to create the project.
back to the top

Debug

  1. In the ASP.NET project, click the
    Project menu, and then click Add Reference.
  2. Click Browse, and then click VB6DlltoCall.dll (created earlier).
  3. Click Open, and then click
    OK.

    Note In Visual Studio 2005, you do not have to click Open.
  4. Add a button from the toolbox to Webform1.aspx.
  5. Double-click Button, and then add the following code to the
    Button1_Clickevent in Webform1.aspx.vb:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim cls As New VB6DlltoCall.VB6ClassClass()
    Button1.Text = cls.showButtonValue
    End Sub
  6. On the Build menu, click Build Solution.
  7. On the Debug menu, click Start Without Debugging.

    Note Start the application that you created one time without debugging to make sure that the ASP.NET worker process is started, and that you can attach to the worker process in the next step.
  8. On the Debug menu, click
    Processes.
  9. In the Processes dialog box, click to select aspnet_wp.exe under Available Processes, and then click Attach.
  10. In the Attach to Process dialog box, click to select the Native check box and the Common Language Runtime check box.

    Note If you do not have the native debugging option, you do not have Microsoft Visual C++ .NET or Microsoft Visual C++ 2005 installed. You must install Visual C++ .NET or Visual C++ 2005 for the debugging to work correctly.
  11. Click OK, and then click
    Close.

    Note When you click OK, the debugger may take up to five minutes to attach.
  12. In the Visual Studio .NET or Visual Studio 2005 IDE, point to
    Open on the File menu, and then click
    File.
  13. Click the Visual Basic 6.0 class file (VB6Class.cls), and then click Open.
  14. Set a break point in the VB6Class.cls file on the following code line:
    showButtonValue = 1000
  15. Switch to the Web browser window that was open with the .aspx page when you clicked Start Without Debugging in step 7.
  16. Click Button on the Webform.aspx page.


    This hits the break point in the Visual Basic 6.0 class file.
back to the top

References

For additional information, click the following article numbers to view the articles in the Microsoft Knowledge Base:
170946 How To Create and Use a Minimal ActiveX Component in VB


303845 How To Create or Open a Visual Studio .NET Project in the Root Web
Propriedades

ID do Artigo: 811658 - Última Revisão: 14 de jul de 2008 - Revisão: 1

Comentários