È possibile utilizzare un componente COM senza registrazione senza registrarlo sulla macchina di sviluppo?

StackOverflow https://stackoverflow.com/questions/6351226

  •  28-10-2019
  •  | 
  •  

Domanda

Ho un componente COM senza registrazione che ho sviluppato che funziona bene sulle macchine target senza dover registrare il componente. È in una DLL che ha TLB incorporato e una risorsa RT_Manifest che ha il manifest che elenca le dipendenze dell'assembly e i CLSID per il componente.

In Visual Studio (2008) ho ancora bisogno di registrare questo componente per fare almeno due cose che ho provato. Quando si aggiunge un riferimento al componente, non riesco a selezionare la proprietà isolata per il riferimento a meno che il componente non sia registrato. Inoltre, non posso creare istanze dell'oggetto quando il debugger è in esecuzione a meno che il componente non sia registrato. Posso tuttavia aggiungere il riferimento e compilare l'applicazione ed eseguirlo senza registrare il componente.

Esiste un modo per utilizzare un componente COM senza registrazione in Visual Studio senza registrarlo, o deve essere registrato sulla macchina di sviluppo affinché tutto funzioni correttamente?

È stato utile?

Soluzione

È importante qui comprendere la differenza tra l'uso del tempo di compilazione e di runtime di un componente COM. Reg-Free Com è puramente una funzione di runtime. Il manifest che scrivi che descrive l'interfaccia COM è la parte senza registrazione. Non è necessario registrare il componente COM nel registro della macchina. Si fornisce invece le informazioni di registrazione in un file. Ciò significa che non hai bisogno di un installatore. Il che significa anche che sei isolato da problemi di registrazione. Meglio noto come DLL Hell.

Le chiavi nel registro, o le voci nel manifest, sono importanti per aiutare a capire cosa deve essere caricato DLL quando il client COM gli chiede di creare un'istanza dell'oggetto COM.

Questo è molto distinto dal tempo di compilazione. Una libreria di tipi è molto utile per dire al compilatore se hai scritto o meno il codice corretto. Il componente COM ha davvero un'interfaccia IFOO? L'interfaccia IFOO ha davvero un metodo Mumble () che richiede due argomenti? La libreria di tipi indica al compilatore come appare l'interfaccia e consente al compilatore di fare un controllo statico sul codice che hai scritto. Distinto da "Late-legding" BTW, un'opzione che consente di scrivere il codice client COM senza una libreria di tipo (e quindi senza controllo del tipo). Comune nelle lingue di scripting.

Ribadendo: COM senza registrazione riguarda esclusivamente l'installazione, non la scrittura del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top