我有 Windows 7 64 位。我正在尝试将 Firebird 与 VS 2010 一起使用。
我收到以下错误:
未能找到或加载已注册的 .Net Framework 数据提供程序。
我做了以下
- 安装“NETProvider-2.6.5.msi”
- 提取“FirebirdDDEXProvider-2.0.5.zip”
我将 .dll 从 DDEX zip 文件复制到目录 C:\Program Files (x86)\FirebirdClient其内容是:
FirebirdSql.Data.FirebirdClient.dll
FirebirdSql.Data.UnitTests.dll
FirebirdSql.VisualStudio.DataTools.dll
FirebirdSql.VisualStudio.DataToolsUI.dll
我从 DDEX 编辑了 2 个 reg 文件,将“%path%”替换为“ C:\Program Files (x86)\FirebirdClient ”
从目录“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools”我运行了 Gacutil,如下
cd "C:\Program Files (x86)\FirebirdClient"
"C:\Program Files\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
我不能使用另一个 Gacutil,因为它说它是为以前的版本构建的。
我也跑过
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" /l Firebirdsql.data.firebirdclient
这给了我:
The Global Assembly Cache contains the following assemblies:
Firebirdsql.data.firebirdclient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL
从目录 C:\Windows\Microsoft.NET我修改了以下 4 个文件:
\Framework\v4.0.30319\Config\machine.config
\Framework\v2.0.50727\Config\machine.config
\Framework64\v2.0.50727\Config\machine.config
\Framework64\v4.0.30319\Config\machine.config
在每个文件中,我添加了以下 2 个条目
<configuration>
<configSections>
<section name="FirebirdSql.Data.FirebirdClient" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.6.5.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
</configuration>
<system.data>
<DbProviderFactories>
<add name="Firebird Client Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".Net Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" />
</DbProviderFactories>
</system.data>
毕竟,我仍然无法让 firebird 与 Visual Studio 一起工作。我可以从服务器资源管理器中查看数据库和表,但是我无法添加数据源,在完成步骤中,它给出了一个错误:
“创建新数据源时出错:无法获取“WinFormsApp.DataSet1”的类型信息。
作为一个更好的例子,使用 DbProviderFactory,Firebird 是第 5 个索引,我运行以下代码:
try
{
DataTable dt = DbProviderFactories.GetFactoryClasses();
// Use this for loop to see what row holds FirebirdClient
for (int i = 0; i < dt.Rows.Count; i++)
Console.WriteLine("{0}: {1}", i.ToString(), dt.Rows[i][2].ToString());
// For me, FirebirdClient is at row 5
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]);
出现以下异常:
未能找到或加载已注册的 .Net Framework 数据提供程序。
例外:
System.Configuration.ConfigurationErrorsException was caught
Message=Failed to find or load the registered .Net Framework Data Provider.
Source=System.Data
BareMessage=Failed to find or load the registered .Net Framework Data Provider.
Line=0
StackTrace:
at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)
at Forms.TestForm.TestConn() in C:\Data\Projects\Dev\FirebirdTest\Forms\TestForm.cs:line 113
InnerException: null
任何人都可以请帮忙。