29/11/2007
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
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.
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.
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
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:

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.
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.
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