【问题标题】:Firebird & Visual Studio 2010 Failed to find Data ProviderFirebird & Visual Studio 2010 找不到数据提供者
【发布时间】:2023-03-03 15:34:01
【问题描述】:

我有 Windows 7 64 位。我正在尝试将 Firebird 与 VS 2010 一起使用。

我收到以下错误:

未能找到或加载已注册的 .Net Framework Data Provider。

我做了以下事情

  1. 已安装“NETProvider-2.6.5.msi”
  2. 提取的“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 Data Provider。

例外:

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

谁能帮忙。

【问题讨论】:

    标签: visual-studio visual-studio-2010 firebird dataprovider firebird2.5


    【解决方案1】:

    machine.config 中的这一行:

    <configSections>
        <section name="FirebirdSql.Data.FirebirdClient" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.6.5.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>
    

    应该是这样的:

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

    请注意,版本不同,它应该是运行时版本,而不是 firebird 客户端的版本。另外我相信你只需要编辑 machine.config 的 32 位版本,因为 VS 是一个 32 位应用程序。

    【讨论】:

    • 谢谢!!!我花了很长时间寻找答案,这很有魅力。我相信我的错误在于误读了 DDEX 安装说明。这适用于 .NET 4.0,但使用 3.5,我根据 DDEX 说明将运行时版本更改为 2.0.0.0,但仍然失败,但是,我认为我可以忍受。
    • firebird 客户端只能与 .NET 4.0 一起使用,这与 GAC 的不同版本有关吗,因为我只将 firebird 库安装到 .NET 4.0 GAC 而不是以前的GAC,顺便说一句,我无法运行,这与它是以前的版本有关。
    • AFAIK 4.0 版本不会在 3.5 模式下运行,因为它是在 4.0 中编译的。另外我认为对于 3.5,您应该使用 3.5.0.0 版本。顺便说一句,如果它解决了您的问题,请将其标记为已接受的答案。谢谢。
    【解决方案2】:

    当你更改%path%时,你需要这样做:

    C:\\Program Files (x86)\\FirebirdClient

    【讨论】:

    • 我已经尝试过了,但这不是解决方案。我还查看了如何在注册表中使用其他路径,它们都使用单个反斜杠。感谢您的意见。
    • 当我第一次安装 Firebird 时,这是我的问题,当我将单引号更改为双反斜杠时,一切正常:D
    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多