VBUC
Visual Basic Upgrade Companion. VB6 Converter for .NET & Web.

VB6
ASP
.NET7 supportDownload Now

WebMAP
Cloud Application Migration Tools Transform Desktop Applications

C#
Silverlight
Access
VB.NET
PowerBuilder
Winforms
ASP.NET Web Forms

SnowConvert
The best available tools to perform code migrations from a source database or Spark application to Snowflake.

Oracle
Spark Scala
Spark Python
SQL Server
Teradata

Get Started
There are countless ways to take advantage of BlackDiamond Studio and SnowConvert.

Migration and Other Snowflake Services
Get Up and Running with Snowpark
Using the SnowConvert Trial
Build a Cross-Platform Object Inventory

Try BlackDiamond Studio

Time to Mobilize
Free Assessment Tool

VB to .NET

Add COM - Visible Attributes

There are some cases when a company might want to convert some of its VB6 modules to .NET and keep using them in a COM environment.

E.g.: convert the logic libraries and keep the front end in VB6. The “COM Visible” feature was implemented to assist in this scenarios.

When this optional feature is enabled, the VBUC will generate attributes for the COM-exposed classes and their members in order to keep the resulting assemblies exposed through a COM interface. This enables the resulting components to be called from other non-managed components via COM. A brief code sample:

Original VB6 Code:

The following method is declared in an ActiveX dll.

Public Sub method1()
    MsgBox    “Hello world”
End Sub

Resulting VB.NET Code:

Option Strict Off
Option Explicit On
Imports System
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
<ComVisible(True)> _
<ProgId("Project1.Class1")> _
<ClassInterface(ClassInterfaceType.AutoDual)> _
Public Class Class1
    Public Sub method1()
        MessageBox.Show("hello world", Application.ProductName)
    
    End Sub    
End Class

Resulting C#.NET Code:

using System; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 
using VB6 = Microsoft.VisualBasic.Compatibility.VB6.Support; 

namespace Project1{

[ComVisible(true)][ProgId("Project1.Class1")][ClassInterface(ClassInterfaceType.AutoDual)]
public class Class1{

public void  method1(){
    MessageBox.Show("hello world", Application.ProductName);
}}
}
Talk To An Engineer