25 March 2013 COM Robert Muehsig

Der Post scheint wie aus einer vergangen Zeit (COM???), aber ich hatte erst kürzlich damit zutun. Ich hab ehrlich gesagt auch sehr wenig Ahnung was COM überhaupt macht, aber ich hatte die Aufgabe in einer bestehenden COM-Register-Function Code zu ändern. Ohne Debugging ist das allerdings etwas heiss.

ComRegisterFunction & ComUnregisterFunction

Vereinfacht: Die Methode die mit den Attributen versehen ist, werden bei der jeweiligen Aktion aufgerufen.

    [ComVisible(true)]
    [Guid("E041712F-D936-4B5B-A3F0-5DB66C4634B0"), ProgId("Foobar")]
    public class Foobar
    {
        [ComRegisterFunction]
        public static void RegisterFunction(Type type)
        {
            Console.WriteLine("Register of Foobar...");
        }

        [ComUnregisterFunction]
        public static void UnregisterFuntion(Type type)
        {
            Console.WriteLine("Unregister of Foobar...");
        }

        public string Buzz()
        {
            return Guid.NewGuid().ToString();
        }

    }

Das Registrieren übernimmt das Tool “RegAsm

Das Tool befindet sich hier (bzw. im jeweiligen Framework Order):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe

Beim Aufruf des Tools + Angabe der Assembly wird auch unser Code ausgeführt:

image

Zum Debugging

Zum Debuggen muss man das Projekt nur auf das regasm.exe Tool lenken und den Output als Argument mit angeben:

image

 

Damit sollte auch das Debugging funktionieren:

image

 

Hoffentlich braucht ihr das nicht allzu oft ;)

image


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!