Uso de tipos COM (interoperabilidad) en paquetes de Dynamo
Información general sobre los tipos de interoperabilidad
¿Qué son los tipos COM? - https://learn.microsoft.com/es-es/windows/win32/com/the-component-object-model
La forma estándar de usar los tipos COM en C# es hacer referencia a los montajes de interoperabilidad principales (básicamente una gran colección de API) y enviarlos con el paquete.
Una alternativa es incrustar los PIA (ensamblajes de interoperabilidad principales) en el ensamblaje administrado. Básicamente, esto incluye solo los tipos y miembros que utiliza realmente un ensamblaje administrado. Sin embargo, este enfoque tiene otros problemas, como la equivalencia de tipos.
En esta publicación se describe el problema bastante bien:
Cómo gestiona Dynamo la equivalencia de tipos
Dynamo delega la equivalencia de tipos a .NET (dotnet) runtime. Un ejemplo de esto sería que dos tipos con el mismo nombre y espacio de nombres, procedentes de diferentes ensamblajes, no se consideren equivalentes, y Dynamo devuelva un error al cargar los ensamblajes en conflicto. En cuanto a los tipos de interoperabilidad, Dynamo comprueba si los tipos de interoperabilidad son equivalentes mediante la API IsEquivalentTo.
Cómo evitar conflictos entre tipos de interoperabilidad incrustados
Algunos paquetes ya se han creado con tipos de interoperabilidad incrustados (por ejemplo, CivilConnection). Si se cargan dos paquetes con ensamblajes de interoperabilidad incrustados que no se consideran equivalentes (versiones diferentes según lo definido aquí), se producirá un error package load error
. Por este motivo, se recomienda que los autores de paquetes usen el enlace dinámico (también conocido como enlace tardío) para los tipos de interoperabilidad (la solución también se describe aquí).
Puede seguir este ejemplo:
Last updated