2011-01-06 18 views
8

Un server COM viene creato e lo registro.Impossibile aggiungere un riferimento a un COM nel client COM?

Quando si tenta di aggiungere il server COM in un client COM, non è stato possibile aggiungere e l'errore di inoltro è in arrivo.

", un riferimento a 'COMTest' non poteva aggiungere

il tipo di libreria ActiveX 'c \ utente \ ~ \ Debug \ COMTest.tlb' stato esportato da un assembly .NET e possono non ha aggiunto come riferimento.

Aggiungere un riferimento a .NET invece "

qualcuno può dirmi che cosa è l'errore. Registro la COM in entrambi i modi, anche da VS e ho anche provato con il prompt dei comandi.

risposta

10

Questo è un messaggio "perché sulla Terra vorresti farlo". Progetto + Aggiungi riferimento, scheda Sfoglia, selezionare la DLL, non il TLB. Quindi userete direttamente le classi .NET invece di passare attraverso l'interoperabilità COM due volte.

+15

IMO è un ** "perché sulla terra non funziona" ** situazione. L'assembly .NET può essere utilizzato come server COM (* "È semplice! Basta aggiungere l'attributo ComVvisible!" *), Le app .NET possono essere client COM (* "nwe e migliorate con l'ultimo aggiornamento" *). Dovrebbe essere un avvertimento, non un punto fermo. ----- Caso di utilizzo: sto sostituendo un componente COM nativo con uno .NET, ma il client .NET deve rimanere compatibile con entrambi. – peterchen

+1

.. È vero che posso andare a sfogliare. Ma sto imparando COM, e non sono in grado di capire l'errore !! Sto registrando la DLL e il tlb .... Anche io ho dato anche la chiave snk. @peterchen .... ComVisible (true), ho provato entrambi, mi può spiegare errore. – PawanS

+1

Dovresti scrivere il codice cliente in una lingua diversa. Javascript, VBScript, VB6, qualcosa del genere. Il binding tardivo è supportato, VB.NET è un buon linguaggio per questo. Oppure la parola chiave * dynamic * in C# 4. –

2

Suppongo che tu ti riferisca .tlb. dovresti fare riferimento a .dll,

E dopo averlo registrato con regsvr32, devi solo trovare quella dll in .net aggiungere riferimento in com tab. Guarda here per ulteriori informazioni.