29/11/2007

Utilización del cliente .Net de Firebird con Visual Studio 2005

 

Nota: todos estos pasos están explicados en el archivo ‘readme’ de la instalación de DDEX, pero con un poco menos de detalle (dando varias cosas por sabidas). Reproduzco aquí la secuencia completa de las operaciones a realizar

 

Utilización del cliente sin instalar DDEX

Se puede usar el cliente para conexión a Firebird simplemente referenciando la dll que contiene las clases: FirebirdSql.Data.FirebirdClient.dll. A partir de ahí podemos crear instancias de las clases ADO.NET, por ejemplo para crear un DataSource:

 

SqlDataSource ds = new SqlDataSource(

"FirebirdSql.Data.FirebirdClient",

"c:\\temp\\bd1.fdb",

"select * from clientes order by Nombre");

 

Si tenemos instalado DDEX, podemos definir y usar el DataSource en tiempo de diseño.

 

Instalación de DDEX

Instalacion de la librería en el GAC

Para usar DDEX se debe instalar primero la librería cliente de Firebird en el GAC:

 

Gacutil /i “c:\archivos de programa\FirebirdClient 2.0\

FirebirdSql.Data.FirebirdClient.dll”

 

Una vez instalado, consultar los datos asignados mediante

 

Gacutil /l FirebirdSql.Data.FirebirdClient

 

Esto nos dará una salida como la siguiente

 

The Global Assembly Cache contains the following assemblies:

firebirdsql.data.firebirdClient, Version=2.1.0.0,

Culture=neutral, PublicKeyToken=3750abcc3150b00c,

processorArchitecture=MSIL

 

Tome nota de los valores de version, cultura y PublicKeyToken.

 

OJO con las mayusculas/minúsculas! El nombre de la dll tiene que estar escrito exactamente igual que como se registre en machine.config.

 

Modificacion de machine.config

El archivo de configuración general machine.config se encuentra en la carpeta de instalacion del framework .net, por ejemplo

 

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

 

Aquí hay que agregar los datos del proveedor de Firebird, para lo cual necesitamos tener a mano los valores de registración en el GAC.

Agregar:

 

<configuration>

    <configSections>

        ...

        <section name="firebirdsql.data.firebirdclient" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

        ...

    <configSections>

 

    <system.data>

        <DbProviderFactories>

             ...

             <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".Net Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=%Version%, Culture=%Culture%, PublicKeyToken=%PublicKeyToken%" />

             ...

        </DbProviderFactories>

       </system.data>

       ....

</configuration>   

 

Donde

%Version% es el numero de versión del assembly tal como se registró en el GAC, por ejemplo 2.1.0.0

%Culture% es la cultura con la que se registró el assembly en el GAC, por ejemplo neutral

%PublicKeyToken% es la clave pública del assembly, por ejemplo 3750abcc3150b00c

 

Modificación del registro

Ahora hay que agregar algunos datos al registro de Windows. Los archivos de registro se incluyen en la distribución del DDEX en forma de archivos .reg que al ejecutarlos se introducen directamente en el registro.

Para instalar el soporte de diseño sin tener que instalar el SDK de VisualStudio, hay que ejecutar el archivo FirebirdDDEXProviderPackageLess32.reg; pero primero hay que modificarlo escribiendo el path correcto de instalación de la librería en donde dice %path%

 

 

 

Una vez realizados todos estos pasos, se tendrá soporte para el proveedor de datos de Firebird en los diseñadores de Visual Studio, por ejemplo para definir un DataSource asociado a un GridView:

 

 

El problema de la ventana que desaparece

Un problema típico es la falla al cargar el ensamblado del cliente Firebird; el síntoma visible es una desaparición súbita de la pantalla de configuración del DataSource.

El problema generalmente tiene que ver con una mala registración de la librería, alguna diferencia entre los datos que se ingresaron al GAC con los que se escribieron en machine.config o el registro. Compruebe que las mayúsculas / minúsculas están en los lugares correctos tanto en el GAC como en machine.config, y que el path esté bien colocado en el archivo de registro.

 

Desinstalación del GAC

Si se encuentran problemas en la registración del ensamblado en el GAC y se hace necesario desinstalarlo, se puede hacer con el siguiente comando:

 

Gacutil /u FirebirdSql.Data.FirebirdClient

 

No obstante, hay veces que este comando falla: cuando hay alguna dependencia con una instalación realizada a través de Windows Installer. Gacutil avisará del problema pero no puede hacer nada para resolverlo.

 

Que hacer si gacutil marca dependencias con windows installer

La dependencia de un ensamblado con Windows Installer puede venir de una instalación de algún producto que registró automáticamente la librería en el GAC (en cuyo caso habrá que desinstalar primero ese producto para después eliminar la librería) o bien de un error conocido en la interacción de Windows Installer y el GAC (http://support.microsoft.com/?scid=kb%3Ben-us%3B873195&x=16&y=14). Este último caso requiere de la modificación manual del registro de Windows para su solución: busque en las claves

 

HKEY_CURRENT_USER\Software\Microsoft\Installer\Assemblies\Global, o

HKEY_LOCAL_MACHINE\Software\Classes\Installer\Assemblies\Global

 

Una entrada predeterminada (default) o la misma de la librería (en nuestro caso FirebirdSql.Data.FirebirdClient) con un valor espúreo, algo de la forma ‘=ysgSC6wx9uiD1dqmmjW>m$!GP^D'A@?z}gn3}lta’. Si lo encuentra, elimine esa clave del registro y reintente la desinstalación del GAC