Support Statement: IDFs for interop assemblies

Q: My code uses .NET through interop. Can I create and IDF for that?

A: Yes.

.NET projects can compile to a DLL file, but that file will contain an assembly, not a COM component.   In order for your VB6 code to use those assemblies, there will also b e a TLB file.  This TLB file is in COM format and is referred to as a COM Callable Wrapper (CCW) and it is generated by Microsoft .NET framework tool (tlbexport) when you do a build in visual studio and have selected COM visible for the .NET project in the IDE. 

In any event, you should be able to locate the TLB file(s) that correspond to the .NET project(s).  Look in the bin\Debug or bin\Release folder associated with the project and see if you find a TLB file corresponding to the DLL.  The TLB file(s) are what you will process with gmStudio to create IDF file(s). 

FWIW: There are a number of .NET code attributes one can add to the .NET code to fine tune the CCW interface through which your VB6 code will reference the .NET API.   Sometimes teams do not take advantage of this – the resulting IDF will have only the bare minimum information to support call by name marshaling – its late bound, inefficient, and fragile, but it can work.   Other times people play games with the attributes to manipulate class names and this creates a different type of challenge.  Still, some IDF is better than none.  So: look for the TLB files and see if you can process them into IDFs.  The resulting files can always be fine tuned to improve the information they provide to the upgrade process.

Great Migrations has a internal tool we use for generating IDFs from .NET assemblies directly, if your VB6/ASP system uses many .NET APIs, please contact us for assistance.

Â