VB Migration Partner converts most references to ActiveX controls into references to a native .NET control. However, in a few cases the converted VB.NET project still indirectly references the original ActiveX control (the direct reference is to a .NET class that wraps the ActiveX control). For this reason, it is necessary that a runtime license for the following components be installed on the computer where the converted VB.NET project runs:
RDO (the MSRDO20.DLL type library)
MSChart, DataGrid, MSInet, MSMapi32, MSWinsock, MSComm32, MCI32
CmdDlg32 (only if Print or Print Setup dialogs are used)
In general, the runtime license for these components is always present on computers where VB6 is installed. Because you typically run VB Migration Partner on a computer where VB6 is also installed, you never meet any problem when running the converted VB.NET project on the computer where the migration takes place.
However, if you later deploy the VB.NET project – either in source or compiled form – to a computer where VB6 is not installed, then you get the following fatal error:
System.Runtime.InteropServices.COMException (0x80040154):
Retrieving the COM class factory for component with CLSID
{9A8831F0-A263-11D1-8DCF-00A0C90FFFC2} failed due to the following error:…
Note that the actual CLSID displayed in the message depends on the ActiveX component that caused the problem.
The solution to this issue is simple: you just need to add a license to this controls, which you do by adding a set of keys to the registry. These keys are stored in the VB6Controls.reg file, which comes with Visual Studio .NET.
More details on the problem and its solution are provided in the following Microsoft KB article: http://support.microsoft.com/kb/318597/en-us.
Note: even if the abovementioned KB article explains that you need to merge the VB6Controls.reg file for all the ActiveX controls in the list, our tests show that you need to perform this operation on the end user’s computer only if the converted application uses RDO.DLL.