Introduction
TlbExp.exe and Regasm.exe tools aid us in exporting assembly information to a type library so that non .NET Applications or unmanaged code use this type library information to call .NET assembly.
Just like tlbimp
which works on the entire COM Component tlbexp works on the entire assembly.
The entire assembly is converted at the same time. You cannot use it to generate type information for a subset of the types.
Tbexp only generates the type library information for an assembly but it does not register the type libraries unlike regasm.exe
Let us now create an assembly for which we will create a type library and use it through Visual Basic.
- Open a new dotnet project (Class Library)
- Add a class to the project called
MyClass
as below
public class MyClass
{
public MyClass()
{
}
public int Add (int i , int j)
{
return i +j;
}
public int Mul (int i , int j)
{
return i *j;
}
}
- Strong name your assembly, compile the project and create the assembly
- Go to the Visual Studio command prompt and type
tlbexp /?
to explore all the options. I have enlisted them below:
/out:FileName File name of type library to be produced
/nologo Prevents TlbExp from displaying logo
/silent Prevents TlbExp from displaying success message
/verbose Displays extra information
/names:FileName A file in which each line specifies the
captialization of a name in the type library.
/? or /help Displays this usage message
- To create a
typelibrary
from it type the following command tlbexp <application name>.dll
e.g. tlbexp tlbexp.dll
- If the export was successful a success message diplaying the entire path and the name of the .tlb will be shown to you
Assembly exported to F:\Net\tlbexp\bin\Debug\tlbexp.tlb
- You can also use the
/verbose
option to check out the details of the classes that were exported
- Although our
typelibrary
is created, our assembly is not yet registered. You can register the assembly using regasm tool
- Go to the Visual Studio command prompt and type
regasm /?
to explore all the options. I have enlisted them below:
/unregister Unregister types
/tlb[:FileName] Export the assembly to the specified type library
and register it
/regfile[:FileName] Generate a reg file with the specified name
instead of registering the types.
This option cannot be used with
the /u or /tlb options
/codebase Set the code base in the registry
/registered Only refer to already registered type libraries
/nologo Prevents RegAsm from displaying logo
/silent Silent mode. Prevents displaying of success messages
/verbose Displays extra information
/? or /help Display this usage message
- To only register the assembly, use the following command:
regasm <application name>.dll e.g. regasm TlbExp.dll
- You can also create a .reg file containing all the registry entries:
regasm TlbExp.dll /regfile:myTlbExp.dll .reg
- You also create
typelibrary
from assembly using regasm tool by using /tlb
option
- To use this component from VB 6.0 put the assembly in GAC. You can do this by either using gacutil or just dragging and dropping the assembly in <drive>/winnt/assembly folder
- You can now use this assembly from VB 6.0
- Open a VB std project. Go to references. Select the .tlb file that we generated from the list
- Yes, you can now use your .NET assembly from VB 6.0. The sample code of using your .NET assembly from VB:
Dim tlbExp As tlbExp.MyClass
Set tlbExp = New tlbExp.MyClass
Label1.Caption = tlbExp.Add(1, 2)
Note : You cannot use tlbexp on an assembly produced by tlbimp because in that case you can directly use type library which was used to produce the assembly.