Library tutorials & articles
COM Interoperability in .NET Part 2
- Introduction
- The managed code
- Generating a Type Library
- The unmanaged code
Generating a Type Library
After compiling the project we have to create a type library file. So that only most unmanaged application development tools require a type library before you can make references to external types.
COM states that all server application that is programmed to share their features with other applications is to be register at a common location. The client needs to determine the exposed methods, properties and events. This is done via the libraries. The client reads the registry; determine the properties, methods, and event s of the object. COM requires up information such as CLSIDs, IIDs, and ProgIDs etc. But we know the assemblies are not registered.
.NET framework does not depend on the registry and uses metadata for this information.
Hence, we have to produce the COM-compatible registry entries for our managed
server so that the COM runtime could instantiate our server. The .NET framework
provides a couple of tools for this. You can use the Type Library Exporter utility
(TLBEXP.exe) or the Assembly Registration Utility (Regasm.exe),
both of which you'll find in the Bin directory of your .NET SDK installation.
REGASM is a superset of the TLBEXP utility in that it also does much more than generating a type library. It's also used to register the assembly, so that the appropriate registry entries are made to smooth the progress of the COM runtime and the .NET runtime to fastener up the COM aware client to the .NET component.
Usually a type library can be generated from an assembly using the regasm.exe utility. The regasm.exe utility not only registers an assembly and it also creates the required type library file, as shown here.
regasm Server.dll /tlb:Netserver.tlb
After creating the type library file you have to add a reference this to your project. For example, with Visual Basic 6.0, you can reference the .tlb file or dll file from the Project/References dialog. In Visual C++ 6.0, you can use the #import statement to import the type definitions from the type library directly into C++. Once the reference to the type library is added to the project, the types defined within that library can be referenced from unmanaged code.
Installing the Assembly
In order to actually create managed types from unmanaged code, the assembly needs to be installed in the global assembly cache (GAC) and registered for use from COM.
You can install an assembly in the global assembly cache using gacutil.exe utility. Assemblies can be uninstalled using the /u option.
gacutil /i simpleserver.dll
Related articles
Related discussion
-
Problem after strong naming an assembly
by rinkurathor1 (0 replies)
-
Very slow inserts using SqlCommand.ExecuteNonQuery()
by porchelvi (1 replies)
-
VB.net class to connect to sql database
by senol01 (2 replies)
-
how to select item to datagrid from textbox
by chandradev1 (49 replies)
-
Adobe Flex reaches out to .NET developers
by ranganathanmca (1 replies)
Related podcasts
-
CodeCast Episode 4: State of .NET, IE8, ASP.NET MVC, and O'Reilly Media
CodeCast Episode 4: State of .NET, IE8, ASP.NET MVC, and O'Reilly MediaHosts Ken Levy and Markus Egger discuss the new State of .NET events, IE8, ASP.NET MVC, followed by an interview from PDC with two editors from O'Reilly Media. More on ASP.NET MVC can be found at http://asp.net/mvc. Interview...
Related jobs
-
Microsoft .Net Architect
in AMSTERDAM (€50K-€90K per annum) -
Applicatie ontwikkelaar binnen Defensie
in Amsterdam (£50K-£90K per annum) -
Business Analist (Openbaar) Vervoer
in Amsterdam (€50K-€90K per annum) -
Application Engineer (VB, .Net, Java) - Standplaats: Utrecht
in Amsterdam (€50K-€90K per annum)
Events coming up
-
Dec
6
Developing AJAX Web Applications with Castle Monorail
London, United Kingdom
Monorail is the model-view-controller engine of the Castle Project, bringing many of the best ideas of Ruby on Rails to the .NET world. In this talk, David De Florinier and Gojko Adzic show how Monorail makes it easy to develop .NET based AJAX applications, and how to use the Castle Project to build Web 2.0 applications effectively. Come to this session if you are a .NET web developer. Everyone is welcome!
I AM A CHINESE,THIS IS MY FIRST TIME TO VISIT THIS WEB SITE~~~~
I MAJOR IN COMPUTER,SOFTWARE,BEING A SOPHIMORE ,I AM SO DESIRABLE TO MAKE A FRIENDS WITH DIFFERENT COUNTRIES~~~~~
I LIKE SPORTS,ESPECIALLY BASKETBALL,AND MUSIC,PLAYING GUITAR~~~~~~
I LOOK FORWARD TO RECEIVING YOUR MESSAGE,MY EMAIL:CHARLES_ANDREW@163.COM
THANKS ,A FRIEND FROM CHINA
Hello, good news!!!
I just figured out what was missing in what was reported in previous comment.
In the Properties Pages of the .NET project, choosing "Configuration Properties" on the left panel, and then "Build", there is a switch labelled "Register for COM Interop", and of course it has to be set "ON", for all this to work as expected!!!!
Well, let's keep working.!!!!
Be well!!!!!
Hello, G.Gnana Arun:
Hi, good day, greetings from Mexico City.
Well, this post is to commet I just tried your implementation, I created a .NET DLL with VB.NET, then followed the .TLB file, just as you specify in your article, but at the moment of using the library in a VB 6.0 project, using the reference to the .TLB file, as you dictate, just when the object is to be instantiated, I receive a Num 429 error, "ActiveX Object can´t be created". I include here the code for the class in VB.NET:
Public
Class cDotNetUtilsVB60 Public Shared Function IsPositiveInfinity(ByVal pdblNum As Double) As Boolean Dim lnuNumTem As Double Return lnuNumTem.IsPositiveInfinity(pdblNum) End Function Public Shared Function IsNegativeInfinity(ByVal pdblNum As Double) As Boolean Dim lnuNumTem As Double Return lnuNumTem.IsNegativeInfinity(pdblNum) End FunctionEnd
ClassCan you figure out what I'm doing wrong???????
Thanks in advance, be well
Roberto Gutierrez R.
This thread is for discussions of COM Interoperability in .NET Part 2.