Domanda

Ho 2 .NET DLL che espongo a COM usando Regasm. Per semplificare il riferimento all'interno di un client COM, vorrei trasformarli in un unico file.

Ho provato a convertire entrambi i file in IDL e quindi copiare il contenuto della sezione della libreria nell'altro e quindi compilare di nuovo su .tlb con Midl. Funziona bene per i typedefs all'interno del secondo IDL, ma sembra fallire quando si tratta delle interfacce in cui ho copiato. Ole/com Visuale può vedere le definizioni delle interfaccia ma quando provo a usare il TLB tramite com non riesco a trovare le interfacce che Ho copiato.

Volevo assicurarmi prima di trascorrere troppo tempo su questo, che in questo modo sia possibile scattare l'IDL.

È stato utile?

Soluzione 3

OK, quindi si scopre che i problemi che stavo riscontrando non erano legati alla fusione dell'IDL.

Se desideri unire a IDL, puoi farlo semplicemente copiando il contenuto di una sezione di biblioteca in un IDL in un altro. Quindi eseguire Midl sul file unita per trasformarlo in un TLB.

Altri suggerimenti

Potresti usare Ilmerge combinare prima gli assiemi .NET e quindi utilizzare Regasm sull'assemblaggio risultante?

Ilmerge è un'utilità per unire più assiemi .NET in un singolo assembly .NET. Funziona su eseguibili e DLLS e viene fornito con diverse opzioni per controllare l'elaborazione e il formato dell'output.

Non vedo un modo ovvio che fallirebbe. Hai detto che hai unito le sezioni della biblioteca ma non hai detto che hai spazzato via le dichiarazioni dell'interfaccia dall'altra .idl. Sarebbe una spiegazione ovvia, ma improbabile.

Una modalità di errore è quando l'app client utilizza la libreria Tipo per i puntatori dell'interfaccia del maresciallo attraverso i confini degli appartamenti o fuori dal processo. Ciò richiede tuttavia le chiavi del registro nelle interfacce HKCR . .NET non li crea, dovresti farlo da solo. Sapresti se lo facessi, neanche una spiegazione.

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