Firmado dependencia de montaje que hace referencia a una DLL COM debe tener la dependencia de interoperabilidad generado ensamblaje de referencia

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

Pregunta

Lo siento por el terrible título.

Tengo un montaje firmado 'Signed.dll' que es una dependencia de otro conjunto, dicen Executable.exe.

Signed.dll hace referencia a una DLL COM y expone públicamente uno de los tipos de esta DLL COM: 'ComPublicT'

Executable.exe debe hacer referencia a la Interop.COM.dll generada automáticamente del proyecto firmado, en lugar de añadir una referencia a la DLL COM originales.

El error es una falta de coincidencia tipo entre dos tipos ComPublicT diferentes de los dos conjuntos de interoperabilidad COM diferentes.

Esto sólo es necesario si se firma Signed.dll.

Además de la creación de un tipo que imita ComPublicT, ¿cómo puedo permitir ejecutable hacer referencia a la DLL COM en lugar de la asamblea de interoperabilidad COM Firmado?

¿Por qué sucede esto?

Editar Esta es una composición algo diferente:

Proyecto firmado hace referencia a COM.dll, y públicamente expone un tipo de la COM.dll La adición de esta referencia en Visual Studio crea automáticamente Interop.COM.dll

referencias ejecutables y depende del proyecto firmado Normalmente se puede agregar una referencia a COM.dll y todo está bien.

Debido Firmado está firmado, el tipo Interop.COM.dll públicamente expuesta desde Firmado no es visto por el compilador como el mismo que el tipo públicamente expuesta a partir del ejecutable Interop.COM.dll

ejecutable de forma manual debe hacer referencia de Firmado Interop.COM.dll, que se siente frágil.

¿Fue útil?

Solución

  1. Cada ensamblaje de referencia mediante un conjunto firmado también debe ser firmado.

  2. Normalmente hay una firmado ensamblado de interoperabilidad primario (PIA) proporcionado por el autor de la DLL COM. Debe ser el ensamblado de interoperabilidad única por sus tipos COM padres referenciados por cualquier ensamblado de .NET. http://msdn.microsoft.com/en-us/library/aax7sdch. aspx No hay un PIA disponible en mi caso.

Los dos ensamblados de interoperabilidad generados por Visual Studio para mis dos proyectos se diferencian en que uno de interoperabilidad montaje está firmado, y el otro es sin signo.

Por lo tanto, los tipos contenidos en las los ensamblados de interoperabilidad difieren.

Una solución es para generar un solo ensamblado de interoperabilidad firmado que se hace referencia por ambos proyectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top