Mantener la versión correcta para una DLL COM referenciada en un proyecto .NET

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Quiero hacer referencia a una DLL COM en un proyecto .NET, pero también quiero asegurarme de que la DLL de interoperabilidad creada tenga la versión correcta (para que los parches sepan cuándo se debe cambiar la DLL).

si uso TlbImp Puedo especificar la versión requerida con el /asmversion flag pero cuando lo agrego directamente desde Visual Studio obtiene una versión que no tiene nada que ver con la versión original de COM DLL.

Intenté cambiar la versión en el .vcproj archivo

<ItemGroup>
    <COMReference Include="MYDLLLib">
        <Guid>{459F8813-D74D-DEAD-BEEF-00CAFEBABEA5}</Guid>
        <!-- I changed this -->
        <VersionMajor>1</VersionMajor> 
        <!-- This too -->   
        <VersionMinor>0</VersionMinor> 
        <Lcid>0</Lcid>
        <WrapperTool>tlbimp</WrapperTool>
        <Isolated>False</Isolated>
    </COMReference>
</ItemGroup>

Pero luego el proyecto no se pudo compilar con el siguiente error:

error CS0246:No se pudo encontrar el tipo o nombre del espacio de nombres 'MYDLLLib' (¿falta una directiva de uso o una referencia de ensamblado?)

¿Hay alguna manera de hacer esto sin crear todas mis referencias COM con TlbImp ¿por adelantado?

Si la respuesta es ¿Hay alguna manera de especificar un número de compilación además de las versiones principal y secundaria?(por ejemplo, 1.2.42.0)

¿Fue útil?

Solución

El Guid se refiere al Guid de TypeLib, no a la DLL directamente.Los números de versión se refieren a la versión de TypeLib, no a las DLL.

El número de versión provendrá de su archivo idl y creo que solo admite una versión mayor y una menor, no una versión de compilación.¿Esta versión cambia cuando modifica la biblioteca de tipos?

Los números de versión aparecerán en el registro en:

HKEY_CLASSES_ROOT\Typelib\{typelib uuid}\Major.Minor

Si la versión secundaria se establece en 0, creo que importará la versión "más reciente" que coincida con la versión principal, pero la versión principal debe configurarse en algo.

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