Firebird & Visual Studio 2010 Не удалось найти поставщика данных
У меня Windows 7 64bit. Я пытаюсь использовать Firebird с VS 2010.
Я получаю следующую ошибку:
Не удалось найти или загрузить зарегистрированный поставщик данных.Net Framework.
Я сделал следующее
- Установлен "NETProvider-2.6.5.msi"
- Извлечено "FirebirdDDEXProvider-2.0.5.zip"
Я скопировал.dll из ZIP-файла DDEX в каталогC:\Program Files (x86)\FirebirdClient, содержимое которого:
FirebirdSql.Data.FirebirdClient.dll
FirebirdSql.Data.UnitTests.dll
FirebirdSql.VisualStudio.DataTools.dll
FirebirdSql.VisualStudio.DataToolsUI.dll
Я отредактировал 2 reg файла из DDEX, заменив "%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
Может кто-нибудь, пожалуйста, помогите.
2 ответа
Эта строка в 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. Также я считаю, что вам нужно редактировать только 32-битную версию machine.config, так как VS - 32-битное приложение.
Когда вы меняете %path%
, вам нужно сделать это следующим образом:
C:\\Program Files (x86)\\FirebirdClient