Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 1
  • 58

Dotychczas w Visual Basic 6.0 tworzyliśmy projekt typu ActiveX DLL, który rejestrowaliśmy narzędziem regsvr32 na komputerze, gdzie był uruchamiany program sklepowy. 

Program sklepowy miał w parametrach podaną nazwę biblioteki i klasy z tego naszego DLL-a i uruchamiał z niej funkcję wejścia przy obsłudze jakiejś funkcji programu.

Potrzebujemy teraz napisać w .NET C# ‘bibliotekę’, którą da się używać w podobny sposób przez program sklepowy. Poprzednia było pisana w Microsoft Visual Studio 6.0, które generowało Win32 DLL, a teraz .NET nie generuje już takich "cukierków" i jest problem, bo programowi sklepowemu w parametrach jesteśmy w stanie podać tylko nazwę biblioteki i klasy w niej zdefiniowanej, którą ma odpalić. Tylko jak z .NET'a wygenerować coś, co program sklepowy wyłapie, tak jak wyłapywał wcześniej moduł zarejestrowany przy pomocy regsvr32? Bo teraz to narzędzie nie rejestruje już DLL-ek generowanych przez .NET'a. Dla modułów typu classLibrary daje komunikat, że nie mają punktu wejścia DllRegisterServer. To jak się za to zabrać?

 

 

Uczestnik szkolenia
  • Zapytał
  • @ Uczestnik szkolenia | 30.09.2014

Odpowiedź (1)

  • 5

Microsoft wprowadzając platformę .net przed wielu laty, na szczęście nie zapomniał o "starych" aplikacjach, korzystających z technologii .COM.

Możesz napisać bibliotekę w  C# i w .NET i opublikować jako COM (Active-X).

We właściwościach projektu jest opcja Register as COM.  Jeśli zaznaczysz tę opcję, to Visual Studio stworzy wrapper, który opakuje bibliotekę .NET w otoczkę COM. Taką bibliotekę można następnie zarejestrować i wywoływać jak stary poczciwy COM.

Dzięki temu będziesz mógł ją wywołać ze swojej aplikacji sklepowej. Pamiętaj tylko, że na komputerze końcowym musi być zainstalowany .NET Framework, ale obecnie to już standard.

Zapoznaj się ze szczegółowym tutorialem na ten temat:

http://www.codeproject.com/Articles/7859/Building-COM-Objects-in-C

 

 

  • Odpowiedział
  • @ | 30.09.2014
  • TRENER ALTKOM AKADEMII