Firmato dipendenze assembly che fa riferimento a una DLL COM deve avere la dipendenza generato interoperabilità assembly di riferimento

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

Domanda

Ci scusiamo per il titolo terribile.

Ho un assembly firmato 'Signed.dll' che è una dipendenza di un'altra assemblea, dicono eseguibile.exe.

Signed.dll fa riferimento a una DLL COM ed espone pubblicamente uno dei tipi di questo COM DLL: 'ComPublicT'

eseguibile.exe deve fare riferimento al Interop.COM.dll generato automaticamente dal progetto firmato, piuttosto che aggiungere un riferimento al DLL COM originale.

L'errore è un tipo non corrispondente tra due differenti tipi ComPublicT da due diversi assembly di interoperabilità COM.

Questa è necessaria solo se Signed.dll è firmato.

A parte la creazione di un tipo che imita ComPublicT, come posso permettere eseguibile per fare riferimento la DLL COM piuttosto che l'assembly di interoperabilità COM di Firmato?

Perché accade questo?

Modifica, Ecco un'analisi un po 'diversa:

È stato firmato Realizzazioni COM.dll, e pubblicamente espone un tipo dal COM.dll L'aggiunta di questo riferimento in Visual Studio crea automaticamente Interop.COM.dll

riferimenti eseguibili e dipende dal progetto firmato Normalmente è possibile aggiungere un riferimento a COM.dll e tutto va bene.

A causa firmato è firmato, il tipo Interop.COM.dll pubblicamente esposto da Firmato non è visto dal compilatore come lo stesso come il tipo pubblicamente esposto dal Interop.COM.dll di eseguibile

eseguibile deve manualmente il riferimento di Firmato Interop.COM.dll, che si sente fragile.

È stato utile?

Soluzione

  1. Ogni assembly di riferimento da un assembly firmato deve essere firmata.

  2. Normalmente v'è un assembly di interoperabilità primario firmato (PIA) fornito dall'autore della DLL COM. Dovrebbe essere l'assembly di interoperabilità esclusiva per i suoi tipi COM genitore a cui fa riferimento ogni assembly .NET. http://msdn.microsoft.com/en-us/library/aax7sdch. aspx Non c'è un PIA disponibili nel mio caso.

I due assembly di interoperabilità generati da Visual Studio per i miei due progetti si differenziano in quell'assemblea un'interoperabilità è firmato, e l'altro è senza segno.

Quindi, i tipi di contenuti nei assembly di interoperabilità differiscono.

Una soluzione è quella di generare un unico assembly di interoperabilità firmato a cui fa riferimento entrambi i progetti.

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