To make it easier for you to upgrade your VB 6 applications, Microsoft provides made two free tools:
Before you upgrade your VB 6 application, you should first run your application through the Code Advisor for VB 6 and fix any ambiguous code it identifies that will possibly make the upgrade process difficult. Then, open your VB 6 application in Visual Studio 2005 so that the Upgrade Wizard can upgrade your code to VB 2005.
6.3.1. Using Code Advisor for VB 6
The first step toward upgrading your VB 6 applications to VB 2005 is to run the Code Advisor for Visual Basic 6.0. The Code Advisor for Visual Basic 6 is an add-on for Visual Studio 6.0 that is used to review your code to ensure that it meets predetermined coding standards. The coding standards are based on best practices developed by Microsoft to produce robust and easy-to-maintain code. You can download this free tool from: http://www.microsoft.com/downloads/details.aspx?FamilyID=a656371a-b5c0-4d40-b015-0caa02634fae&DisplayLang=en.
Once the Code Advisor for VB 6 is downloaded and installed, you will find a new set of buttons in the toolbar area of Visual Studio 6.0, as shown in Figure 6-8.
The Scope Definition button allows you to use Code Advisor to check the entire project, or to check only the currently active file.
To see how the Code Advisor for VB 6 works, consider the following simple VB 6 application consisting of a single form (Hello Application) as shown in Figure 6-9. The form contains four controls, including a Label control (lblMessage), a Text control (txtName), a Hello button (cmdHello), and an Exit button (cmdExit).
Figure 6-8. The Code Advisor toolbar
Figure 6-9. An application in VB 6
When the Exit button is clicked, the form displays a message box that asks users if they want to exit, as shown in Example 6-2.
Example 6-2. Exit button Click event handler
Private Sub cmdExit_Click() response = MsgBox("Exit program?", vbYesNo) If response = vbYes Then End End If End Sub
This VB 6 application also uses a subroutine to display a message via the MsgBox function, as shown in Example 6-3. Note that this function uses the default ByRef to pass in parameters by reference.
Example 6-3. DisplayMsg subroutine
Public Sub DisplayMsg(str As String) MsgBox str End Sub
When the Hello button is clicked, the TextBox control is assigned to an Object of type object. A comparison is then performed to check if the Text property (not explicitly specified as it is the default property) in the TextBox control is empty. The relevant message is then printed. The code is shown in Example 6-4.
Example 6-4. Hello button Click event handler
Private Sub cmdHello_Click() Dim obj As Object Set obj = txtName If obj = "" Then DisplayMsg ("Please enter your name") Else DisplayMsg ("Hello " & txtName) End If End Sub
To use the Code Advisor to examine the application, click the Add FixIts button. The toolbar will display the number of issues (known as FixIts) that Code Advisor has raised (in this example, two FixIts were raised Count:2), as shown in Figure 6-8.
To examine the FixIts raised, switch to the Code view where you will see comments prefixed with the word "FIXIT" as shown in Example 6-5.
Example 6-5. Hello and Exit button Click event handler FIXITs
'FIXIT: Use Option Explicit to avoid implicitly ' creating variables of type Variant ' FixIT90210ae-R383-H1984 Private Sub cmdExit_Click() response = MsgBox("Exit program?", vbYesNo) If response = vbYes Then End End If End Sub Public Sub DisplayMsg(str As String) MsgBox str End Sub Private Sub cmdHello_Click() 'FIXIT: Declare 'obj' with an early-bound data type 'FixIT90210ae-R1672-R1B8ZE Dim obj As Object Set obj = txtName If obj = "" Then DisplayMsg ("Please enter your name") Else DisplayMsg ("Hello " & txtName) End If End Sub
Using the Code Advisor toolbar, you can remove all FixIts by clicking the Remove FixIts button, or find the next FixIts by clicking the Find Next FixIts button.
In this example, the two specific FixIts are:
To view a summary of the FixIts raised, you can click on the View FixIt Report button. The report is shown as a web page (see Figure 6-10).
Figure 6-10. Viewing the FixIts report
You can customize the Code Advisor (click on Filter FixIts Rules) to examine your code using a specific version of Visual Basic (Visual Basic .NET 2002 or Visual Basic.NET 2003), or based on best practices (see Figure 6-11).
Figure 6-11. Customizing Code Advisor
Let's now modify the application by entering to code shown in bold in Example 6-6 and then run Code Advisor again (by clicking on the Add FixIts button).
Example 6-6. Modified Hello and Exit button Click event handlers
Option Explicit Private Sub cmdExit_Click() Dim response As VbMsgBoxResult response = MsgBox("Exit program?", vbYesNo) If response = vbYes Then End End If End Sub Public Sub DisplayMsg(str As String) MsgBox str End Sub Private Sub cmdHello_Click() Dim obj As TextBox Set obj = txtName If obj = "" Then DisplayMsg ("Please enter your name") Else DisplayMsg ("Hello " & txtName) End If End Sub
This time, the application passes the Code Advisor's check. You can now proceed to the next step of the upgrading process: using the Upgrade Wizard to upgrade the code to VB 2005.
6.3.2. Using the Upgrade Wizard
When you try to open a Visual Basic project (Windows, web, or other) created with a previous version of Visual Studio (Visual Studio 6 or Visual Studio .NET), Visual Studio 2005 will launch the Upgrade Wizard and attempt to upgrade the project to VB 2005. The Upgrade Wizard will automatically upgrade your code to VB 2005, and anything else that is ambiguous will be marked with comments and displayed in the Upgrade Report.
To see how the Upgrade Wizard works, let's upgrade the application discussed in "Using Code Advisor for VB 6." You'll use Visual Studio 2005 to open this VB project. When it's opened in Visual Studio 2005, the Upgrade Wizard will kick into action, as shown in Figure 6-12.
Figure 6-12. The Visual Basic Upgrade Wizard
The Upgrade Wizard will lead you through a series of steps to upgrade the VB 6 project. When you have finished, your VB 6 project will be displayed in Visual Studio 2005.
Figure 6-13 shows the project after it has been upgraded to VB 2005.
Figure 6-13. The upgraded VB project
In Solution Explorer, note that a new item has been added to the project: _UpgradeReport.htm. The _UpgradeReport.htm document lists the changes made to the original project and highlights the various issues encountered during the upgrade process, as shown in Figure 6-14.
Figure 6-14. The content of the _UpgradeReport.htm file
Let's look at the upgraded code and observe some of the salient changes, as shown in Example 6-7. The comments and code added by the Upgrade Wizard are highlighted in bold.
Example 6-7. The upgraded project
Option Strict Off Option Explicit On Friend Class Form1 Inherits System.Windows.Forms.Form Private Sub cmdExit_Click( _ ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) _ Handles cmdExit.Click Dim response As MsgBoxResult response = MsgBox("Exit program?", MsgBoxStyle.YesNo) If response = MsgBoxResult.Yes Then End End If End Sub 'UPGRADE_NOTE: str was upgraded to str_Renamed. 'Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/ 'redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"' Public Sub DisplayMsg(ByRef str_Renamed As String) MsgBox(str_Renamed) End Sub Private Sub cmdHello_Click( _ ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) _ Handles cmdHello.Click Dim obj As System.Windows.Forms.TextBox obj = txtName If obj.Text = "" Then DisplayMsg(("Please enter your name")) Else DisplayMsg(("Hello " & txtName.Text)) End If End Sub End Class
Note that while there is only one upgrade note in this project, several changes have been made to the code:
What you have seen here is a superficial view of the support the Visual Basic Upgrade Wizard can provide. For more details, check out this article at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vstchexpvsnetlab5.asp.