You are on page 1of 34

Best Practices for Upgrading

Visual Basic® 6.0 Projects to


Visual Basic .NET

Joe Healy
Microsoft Corporation
Agenda
z Upgrade Overview
z Common Upgrade Issues
z Upgrade Summary
Upgrade Overview
To Upgrade, or not to Upgrade?
z Upgrading Is Not A Requirement
¾ Leave Existing Code in Visual Basic 6.0
ƒ Continue developing in Visual Basic 6.0
ƒ Or interoperate between Visual Basic 6.0
and Visual Basic .NET
¾ Selective Replacement
¾ Upgrade to Visual Basic .NET
z Considerations
¾ Application Architecture and Technologies
¾ Maintenance or New Development
Upgrade Overview
Your First Upgrade
z Open Project in Visual Basic .NET
z Run the Upgrade Wizard
z Project Doesn’t Compile or Run
z Why?

VB6 Project Upgrade ???


Upgrade Overview
The Upgrade Wizard
‹ Automatically Upgrades 95%
Form Layout

ActiveX Controls

ADO Data Binding

RES files

Code

Syntax Changes

COM Libraries

Upgrade Report
Upgrade Overview
Finishing The Upgrade

Visual Basic Visual Basic Fix Issues Upgraded


Upgrade
6.0 .NET Add Features Project

z Prepare Visual Basic 6.0 application


¾ See “Preparing Your VB6 Application For The Upgrade To
VB.NET” msdn.microsoft.com/library/techart/vb6tovbdotnet.htm
z Fix issues
¾ Micro issues
¾ Macro issues
z Add new features
Common Upgrade Issues
Micro Issues
Variants
ActiveForm
App object
User defined
type
APIs

Non zero arrays

LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object
User defined
type
APIs

Non zero arrays

LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object Some Automatic, Some Manual
User defined
type
APIs

Non zero arrays

LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object Some Automatic, Some Manual
User defined Initialization code
type marshalling attributes
APIs

Non zero arrays

LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object Some Automatic, Some Manual
User defined Initialization code
type marshalling attributes
APIs Replace ‘As Any’ with overloads

Non zero arrays

LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object Some Automatic, Some Manual
User defined Initialization code
type marshalling attributes
APIs Replace ‘As Any’ with overloads

Non zero arrays Zero based arrays,


or System.Array
LSet
Common Upgrade Issues
Micro Issues
Variants Strongly type
ActiveForm Resolve default properties
App object Some Automatic, Some Manual
User defined Initialization code
type marshalling attributes
APIs Replace ‘As Any’ with overloads

Non zero arrays Zero based arrays,


or System.Array
LSet Custom method
Demo 1: Micro Issues
Common Upgrade Issues
Macro Issues
ActiveX documents
DHTML pages
StrPtr, ObjPtr, VarPtr
Graphics
Deterministic
finalization
RDO/DAO data binding
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr


Graphics
Deterministic
finalization
RDO/DAO data binding
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics
Deterministic
finalization
RDO/DAO data binding
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics Use GDI+
Deterministic
finalization
RDO/DAO data binding
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics Use GDI+
Deterministic Dispose
finalization Use GC methods
RDO/DAO data binding
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics Use GDI+
Deterministic Dispose
finalization Use GC methods
RDO/DAO data binding Use ADO .NET
Transactions

On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics Use GDI+
Deterministic Dispose
finalization Use GC methods
RDO/DAO data binding Use ADO .NET
Transactions System.
EnterpriseServices
On x Goto
Common Upgrade Issues
Macro Issues
ActiveX documents Leave in Visual Basic 6.0
DHTML pages Navigate to Visual Basic .NET

StrPtr, ObjPtr, VarPtr Memory pinning


Graphics Use GDI+
Deterministic Dispose
finalization Use GC methods
RDO/DAO data binding Use ADO .NET
Transactions System.
EnterpriseServices
On x Goto Select..Case
Common Upgrade Issues
Upgrading Transactions
z Inherit from
System.ServicedComponent
z Add attributes
¾ Assembly
¾ Class
¾ Method
z Create strong name
Demo 2: Macro Issues
Upgrade Summary
Why Upgrade
z Make New Enhancements in Less Time
¾ Integrate with web services
¾ Expose web services
¾ Application specific performance counters
¾ Integrate with the event log
¾ Just about anything the client asks for will be
easier with .NET (it certainly won’t be harder)
z Let Your Developers Become Technology
Leaders
z Lower Deployment Costs
z Lower Maintenance Costs
z Beat the Competition
Upgrade Summary
Why Upgrade
z First Class Object-Oriented Constructs
¾ Inheritance
¾ Structure exception handling
¾ Parameterized constructors
z Windows® Forms
¾ Visual inheritance
¾ Control anchoring, in-place menu editor
¾ Connected and disconnected databinding
Upgrade Summary
Why Upgrade
z Web And Server Features
¾ Web forms
¾ Web services
¾ RAD for the server
z Better Deployment
¾ DLLs Don’t Need to Register!
¾ XCopy Deployment
¾ Builds .msi and .cab setup programs
Upgrade Summary
Why Upgrade
z Power Features
¾ Multi-threading
¾ Debugging across all languages
z Built From The Ground-up on .NET
Framework
¾ Direct access to .NET classes
¾ Code access security
z ADO .NET
z XML
Upgrade Summary
Lessons Learned
z Start with one component
z Slowest part of upgrade is debugging
runtime errors
z Testing is important
z Upgrading is much faster than rewriting
¾ Expect upgrading to take 5 – 10% of the
original development time
z Upgrade first, then Enhance
Upgrade Summary
After The Upgrade Is Complete
z Positioned For the Future
z Competitive Advantage
z Achieve Better Code Reuse
z Attract and Retain Resources
z Easily Meet Client Requests
z Eliminate the Common Frustrations
¾ Deployment
¾ Maintenance
¾ Development
MSDN Subscriptions
THE way to get Visual Studio .NET
Visual Studio .NET MSDN Subscriptions
Enterprise Architect
Software and data modeling MSDN Universal
Enterprise templates $2799 new
Architectural guidance $2299 renewal/upgrade

Enterprise Developer
Enterprise lifecycle tools MSDN Enterprise
Team development support
$2199 new
Core .NET Enterprise Servers
$1599 renewal/upgrade

NEW
Professional
Tools to build applications MSDN Professional
and XML Web services $1199 new
for Windows and the Web
$899 renewal/upgrade
Resources
z “ Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual
Basic .NET ” – MS Press
z MSDN Articles
¾ “Preparing Your Visual Basic 6.0 Applications For the
Upgrade to
Visual Basic .NET”
¾ “Upgrading Your Visual Basic 6.0 Applications to
Microsoft Visual Basic .NET”
z Visual Basic .NET Upgrade Guide
¾ www.microsoft.com/vbupgrade

z Microsoft Tech·Ed 2002


¾ New Orleans, LA
¾ April 9 – 13, 2002
¾ msdn.microsoft.com/events/teched
Questions?
© 2001 Microsoft Corporation. All rights reserved.

You might also like