Domanda

Ho un progetto VB.Net che ha bisogno di utilizzare una terza parte DLL per il quale esiste anche il montaggio di interoperabilità. Così ho qualcosa di simile:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

Ho provato ad aggiungere il riferimento alla interoperabilità direttamente nel progetto, ma eseguendo il file ho ottenuto un COM non errore registrato.

Così, ho provato la registrazione della interoperabilità come segue:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

Anche dopo il riavvio VS, l'assemblea non è ancora visibile.

È stato utile?

Soluzione

Il comando regasm distrutto le chiavi di registro per il server COM. Dovrete reinstallarlo. utilizzare regasm Solo sul proprio [ComVisible] il codice.

Una ragione si possono avere problemi utilizzando il componente, al di là semplicemente non essendo stato installato correttamente, è perché si sta cercando di eseguire questo su un sistema operativo a 64 bit. E il componente è a 32 bit, di gran lunga il caso più comune. Hai bisogno di forzare la vostra applicazione per l'esecuzione in modalità a 32 bit per essere in grado di usarlo. In VB.NET IDE, che è fatto con il Progetto + Proprietà, scheda Compile, scorrere verso il basso, avanzate opzioni di compilazione, impostare target CPU "x86".

Lo strumento di risoluzione dei problemi definitiva per problemi come questo è di utilità ProcMon SysInternals'. Esso mostra come COM sta utilizzando la chiave HKLM \ Software \ Classes \ CLSID chiave per cercare la DLL a carico.

Altri suggerimenti

Si sta registrando l'interoperabilità, ma (come suggerisce il messaggio di errore) non hai registrato il DLL COM. Prova questo:

regsvr32 pdcclient.dll
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top