Solved

Trying to register a C# DLL as a COM object

Posted on 2006-07-19
3
224 Views
Last Modified: 2006-11-18
First off...much luck on the explanation that solves my problem. However, I know it is somehow possible. Anyway, I have the need to expose some C# objects to an application that works with COM objects. (QuickTest Professional to be exact). We have a lot of tests written in C#...and we want to avoid a rewrite to integrate them with Mercury. So...I have done this sample example that is very simple: Here it is:

Example (C#): Creating a Simple .NET Component
1.      Create a new ClassLibrary project called TestComponent.
2.      Add the following class to the project:
public class Class1
{
            public Class1()
            {
            }
            public int Sum(int num1, int num2)
            {
                  return num1 + num2;
            }
}
3.      In the project settings set the Register for COM Interop option to True
4.      Build the project.
5.      By default, the component ProgID is the <Project Name>.<ClassName>.
6.      In QuickTest, use this code to access the Class1 Sum method.
' Create a TestComponent.Class1 instance
Set oTestCom = CreateObject("TestComponent.Class1")
MsgBox oTestCom.Sum(5,7) 'opens a MessageBox with the number 12


I can tell you for a fact...it is far from that simple. Apparantly...my issue is with getting this DLL exposed for COM. For the love of everything good...how do I do that? My neck is hurting..my ego has been beaten into submission. HELP PLEASE! Thank you for any submissions.
0
Comment
Question by:SGyves
  • 2
3 Comments
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 17139708
The prog ID for a COM component is really Namespace.Class, not Project.Class.  It just happens that project name and namespace are the same by default.

You can control the ProgID of a class with the ProgID attribute:

[ProgID("TestComponent.Class1")]

Bob
0
 

Author Comment

by:SGyves
ID: 17140814
Compiler is not liking that statement. Do I need a specific "using" statement for that?
0
 

Author Comment

by:SGyves
ID: 17140825
Hey...but I used namespace.class....AND IT WORKED....headache gone. Thanks
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction                                                 Was the var keyword really only brought out to shorten your syntax? Or have the VB language guys got their way in C#? What type of variable is it? All will be revealed.   Also called…
Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now