In questo articolo spiegherò come creare un componente COM con VisualStudio e come installarlo.
VisualStudio permette di creare con facilità dei componenti COM. Bisogna però seguire alcuni accorgimenti.
Lanciate VisualStudio e chiedete di creare un nuovo progetto; tra i template offerti, scegliete “Class Library”.
Create la vostra classe, inserendo proprietà e metodi secondo le vostre necessità.
In testa alla vostra classe, inserite le seguenti righe:
Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
Lanciate ora il programma guidgen.exe (lo trovate nella cartella Tools di VisualStudio), e chiedete di generare un nuovo GUID in formato registry; inserite il numero generato (senza le parentesi graffe!) come valore di ClassId.
Chiedete una seconda generazione da usare per InterfaceId, e un’ultima per EventsId.
Cambiate adesso la dichiarazione della vostra classe; supponendo che la vostra classe si chiami miaClasseCOM, il risultato deve essere simile al seguente:
<ComClass(miaClasseCOM.ClassId, miaClasseCOM.InterfaceId, miaClasseCOM.EventsId)> _ Public Class miaClasseCOM
Prima di compilare, ricordatevi di selezionare le opzioni Make Assembly COM-Visible (linguetta Application|Assembly Information… delle proprietà del progetto), e Register for COM Interop ((linguetta Compile delle proprietà del progetto)
Lanciate la vostra build.
Dalla cartella Debug o Release copiate i file .dll e .tlb, e copiateli nella cartella di destinazione.
Registrate il componente tramite il programma regasm.exe (lo trovate nella cartella del framework). Il comando è il seguente:
regasm.exe C:\dll\miaClasseCOM.dll /codebase /tlb:C:\dll\miaClasseCOM.tlb
Fate attenzione: visto che si usa /codebase, bisogna dare al componente COM un nome univoco (strong name) in modo che non possa avere lo stesso nome di nessun altro componente COM registrato, pena l’instabilità o l’inusabilità del sistema.
Un’ultima cosa: quando userete il componente COM in (ad esempio) VB6, dovrete referenziare il file .tlb, non il file .dll.