我正在运行Windows 7 64位、MS Visual Studio 2010、Firebird DDEX 2.0.5和NetProvider 2.7.0.0。我密切关注this stackoverflow问题,结合DDEX提供的ReadMe文件和其他在线文章,尝试安装所有内容。我已经完成了以下操作:
1. 将NetProvider 2.7.0.0安装到C:\Program Files (x86)\FirebirdClient。
2. 将DDEX 2.0.5文件解压缩到C:\Program Files (x86)\FirebirdClientt。
3. 编辑C:\Program Files (x86)\FirebirdClient\reg_files\VS2010中的FirebirdDDEXProvider64注册表文件,使其
"CodeBase"="%Path%\FirebirdSql.VisualStudio.DataTools.dll"
现在变成:
"CodeBase"="C:\\Program Files (x86)\\FirebirdClient\\FirebirdSql.VisualStudio.DataTools.dll"
然后我按照以下步骤使用gacutil.exe安装FirebirdSql.VisualStudio.DataTools.dll和FirebirdSql.Data.FirebirdClient.dll:
cd "C:\Program Files (x86)\FirebirdClient" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" /i FirebirdSql.VisualStudio.DataTools.dll
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" /i FirebirdSql.Data.FirebirdClient.dll
根据上面链接的问题中提供的说明([here])2,除了使用Program Files (x86)中的gacutil.exe来安装FirebirdSql.VisualStudio.DataTools.dll外,我还使用gacutil.exe安装了FirebirdSql.Data.FirebirdClient.dll,因为普通程序文件目录中不存在gacutil.exe。我确实使用了gacutil.exe的list函数来查看这两个文件是否正确安装,并记录PublicKeyFunction等信息。
经过阅读,我决定调整所有四个machine.config文件。它们的路径如下:C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
我从DDEX自述文件中复制了代码,并将其粘贴到文件的正确位置,并相应地填写了各种参数。我做这个的时候考虑到运行时版本号因我是否调整v2或v4 machine.config文件而有所不同,同时也要放入来自上面gacutil.exe步骤记录的正确参数...即version=2.7.0.0,culture=neutral,publickeytoken=3750abcc3150b00c。请参见下文。C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
<configuration>
<configSections>
<section name="firebirdsql.data.firebirdclient" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
文件中更往下
<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=2.7.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" />
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</DbProviderFactories>
</system.data>
对于v4的machine.config文件,情况类似,但是我必须根据以下方式调整代码的DBProviderFactories部分:
<configuration>
<configSections>
<section name="firebirdsql.data.firebirdclient" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="appSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false" />
而这是修改前的 machine.config 代码:
<system.data>
<DbProviderFactories />
</system.data>
这是我所调整的内容:
<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=2.7.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" />
</DbProviderFactories>
</system.data>
64位的V4文件也是如此。当我打开MS Visual Studio 2010并尝试添加连接时,我可以选择Firebird数据源,并列出了Firebird的.Net Framework数据提供程序,然后我会获得下一个窗口,在继续时我可以输入数据库注册参数。但是,即使没有输入任何数据,当我按下“测试连接”时,它会显示“测试连接成功”,而当我按下“确定”时,就会出现错误“无法找到所请求的.NET Framework数据提供程序。可能未安装。”。 我不知道该怎么办。我读过的所有内容都指向machine.config文件有问题,但我找不到问题所在。非常感谢您的帮助。