desarrolloMobile.NET Noticias

miércoles, diciembre 28, 2005

Función LoadTypeLibEx de oleauto32.dll, modificaciones para .NET Framework 2.0

Buenas,

Estaba tratando de actualizar la aplicación COM+ Catalog Reader, para .NET Framework 2.0. Mi intención es sacar una segunda versión y mejorar algunas funcionalidades que por tiempo o por pereza no he podido arreglar.

Una de las funciones que me han dado problema es la que utilizo para importar mediante código la biblioteca WINNT\System32\Com\comadmin.dll (basada en COM), para pasarlo a un ensamblado de interoperabilidad primaria que utilizaré para leer las propiedades del catálogo de COM+ desde código administrado. Una de las funciones que utilizo, LoadTypeLibEx, cuya definición en .NET Framework 1.x era:

[DllImport("oleaut32.dll", CharSet=CharSet.Unicode)]
private static extern void LoadTypeLibEx(string strTypeLibName,
REGKIND regKind,
out UCOMITypeLib TypeLib);

para .NET Framework 2.0, el tipo UCOMTypeLib está desfasado o literalmente (deprecated - desaprobado), con lo que debemos substituirlo por:

[DllImport("oleaut32.dll", CharSet=CharSet.Unicode)]
private static extern void LoadTypeLibEx(string strTypeLibName, REGKIND regKind, out System.Runtime.InteropServices.ComTypes.ITypeLib TypeLib);

El funcionamiento es el mismo, lo único que ahora el CLR fuerza a la utilización del espacio de nombre ComTypes de System.Runtime.InteropServices para la utilización de una interfaz para la bilioteca de tipos de COM, espacio en el cual encontramos métodos que son definiciones de funciones COM y que subsituyen a los ya conocidos UCOM* de .NET Framework 1.x.

No hay comentarios: