Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 火鸟及;Visual Studio 2010未能找到数据提供程序_Visual Studio_Visual Studio 2010_Firebird_Dataprovider_Firebird2.5 - Fatal编程技术网

Visual studio 火鸟及;Visual Studio 2010未能找到数据提供程序

Visual studio 火鸟及;Visual Studio 2010未能找到数据提供程序,visual-studio,visual-studio-2010,firebird,dataprovider,firebird2.5,Visual Studio,Visual Studio 2010,Firebird,Dataprovider,Firebird2.5,我有64位的Windows 7。我正在尝试将Firebird与VS 2010结合使用 我得到以下错误: 未能找到或加载已注册的.Net Framework数据提供程序。 我已经做了以下工作 已安装“NETProvider-2.6.5.msi” 摘录“FirebirdDexProvider-2.0.5.zip” 我将.dll从DDEX zip文件复制到目录中 C:\Program Files(x86)\FirebirdClient其内容包括: FirebirdSql.Data.FirebirdCl

我有64位的Windows 7。我正在尝试将Firebird与VS 2010结合使用

我得到以下错误:

未能找到或加载已注册的.Net Framework数据提供程序。

我已经做了以下工作

  • 已安装“NETProvider-2.6.5.msi”
  • 摘录“FirebirdDexProvider-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:\ProgramFiles(x86)\FirebirdClient

    从目录“C:\Program Files(x86)\Microsoft SDK\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
    
    在每个文件中,我都添加了以下两个条目

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

    任何人都可以提供帮助。

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


    C:\\ProgramFiles(x86)\\FirebirdClient

    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位的应用程序

    我已经试过了,但这不是解决办法。我还研究了在注册表中如何使用其他路径,它们都使用单反斜杠。感谢您的输入。当我第一次安装Firebird时,这是我的问题,当我将单杠更改为双反斜杠时,所有工作:谢谢!!!我花了很长时间寻找答案,这很有魅力。我相信我的错误是误读了DDEX安装说明。这适用于.NET 4.0,但使用3.5时,我根据DDEX指令将运行时版本更改为2.0.0.0,但仍然失败,但是,我认为我可以接受。firebird客户端将仅适用于.NET 4.0,这与GAC的不同版本有关吗,由于我只在.NET 4.0 GAC上安装了firebird库,而不是以前的GAC,顺便说一句,我无法运行,这与它是以前的版本有关。AFAIK 4.0版本将不会在3.5模式下运行,因为它是在4.0中编译的。我还认为,对于3.5,您应该使用3.5.0.0版。顺便说一句,如果它解决了您的问题,请将此标记为已接受的答案。谢谢
    <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>