¿Cómo están?, les traigo el error siguiente que me dio por un rato dolor de cabeza: Method not found: 'Void SAPConector.DTO.DTOIncomingPayments.set_ObjectType(SAPbobsCOM.BoObjectTypes)'.
Este apareció una vez que mi aplicación la pase desde mi ambiente de desarrollo a mi ambiente de pruebas, este error se mostraba en tiempo de ejecución, a la mitad del proceso lo enviaba y no terminaba la tarea.
La solución después de investigar y ver varios portales que no me dieron la respuesta especifica pero si el camino a seguir para resolverlo fue esta:
ANTES Entremos en contexto:
Mi proyecto hace referencia a una dll que ocupa la misma dll que también ocupo en mi proyecto principal en mi caso la de SAP B1 SAPbobsCOM.
1er Error: Los tipos de datos de mi librería cambiaban a Object al hacer referencia a ella desde mi proyecto principal, tipos de datos que comentamos al inicio pertenecen a la dll SAPbobsCOM, de hecho el error muestra un ejemplo: SAPbobsCOM.BoObjectTypes.
esto hacía que cuando llamaba la librería (dll) a mi proyecto principal los tipos de algunos atributos no se mantuvieran en su forma original si no que se convirtieran en tipos object por lo que mi proyecto principal no los reconocía y me marcaba error de compilación.
Solución al 1er error: Coloque en False Embed Interop Types en las propiedades de la referencia de mi proyecto de librería.
2do. Error: Los tipos ya son reconocidos en mi proyecto principal después de colocar en false la opción ya no marca error en compilación pero al momento de ejecutar la solución principal en el servidor de pruebas marca un error en tiempo de ejecución:
Method not found: 'Void SAPConector.DTO.DTOIncomingPayments.set_ObjectType(SAPbobsCOM.BoObjectTypes)'.Solución al 2do error: De igual manera en que coloque Embed en Interop Types de mi librería, también debí colocarlo en false en mi proyecto principal:
3er. Error: al hacer esto me marcaba el siguiente error al ejecutar mi programa: Retrieving the COM class factory for component with CLSID {632F4591-AA62-4219-8FB6-22BCF5F60100} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) .
Solución al 3er. Error: Debi quitar el check en Prefer 32-bit y tomar la opción de x64 en Platform target, esto por que inicialmente estaba chequeado y el target estaba en Any, cabe mencionar que el servidor donde ejecutaba mi solución era de 64 bits.
Con esto mi solución trabajo sin contratiempos 😀. Saludos!.