¿Es posible forzar un ensamblado de interoperabilidad para hacer referencia a una copia local de su DLL COM asociada?Fuerza la interoperabilidad de .NET para utilizar el DLL COM local
Este es el escenario:
Tengo una aplicación .NET que hace referencia a un ensamblado de interoperabilidad (Interop.OTAClient.dll), que es la interoperabilidad de un archivo DLL COM (OTAClient.dll, que es la API de automatización para HP Quality Center). No soy muy conocedor de COM, pero según tengo entendido, el conjunto de interoperabilidad busca las clases COM mediante referencias GUID en el registro, en lugar de apuntar a un archivo específico.
El problema que tengo es que la copia de OTAClient.dll a la que apuntan las claves del registro se sobreescribe por diferentes versiones, dependiendo de la versión de QC en la que acabe de iniciar sesión en un navegador, y las diferentes versiones de estos archivos DLL no son compatibles entre ellos La aplicación .NET solo se conectará a una versión específica de QC, por lo que no puedo hacer que la DLL COM varíe de esta manera.
Cualquier sugerencia sería muy apreciada, ya que este comportamiento es realmente irritante. He visto otras preguntas sobre problemas de interoperabilidad COM, pero parece que se trata de forzar una versión local de la DLL de interoperabilidad para ser utilizada en lugar de una en el GAC, en lugar de este escenario particular que involucra la DLL COM real.
Hola Pavel. Gracias por el enlace. Seguí el ejemplo y VS generó la entrada de manifiesto para OTAClient como se esperaba.Sin embargo, todavía veo los mismos síntomas si la última versión de la DLL ha sido utilizada por última vez por la aplicación del navegador que también usa esa DLL. ¿Crees que es posible que OTAClient tenga sus propias dependencias que también se sobrescriben con las versiones más nuevas? Si es así, ¿alguna sugerencia sobre cómo podría tratar con eso? – Xiaofu
Puede ser posible si esas dependencias son componentes COM en sí mismas. Si es así, debe manejarlos de manera similar (para que termine con un conjunto de bibliotecas autosuficiente). –