Встроенное ограничение вызовов firebird - PullRequest
0 голосов
/ 16 августа 2011

Я скачал и пытаюсь использовать встроенный firebird (нативный fbembed.dll и его помощники) в среде .net / mono через .net-провайдера firebird (FirebirdSql.Data.FirebirdClient.dll).

Основная проблема Я застрял в том, что встроенные компоненты Firebird, похоже, требуют, чтобы все было в одном каталоге в одном проекте (вплоть до кода точки входа приложения). В тот момент, когда я пытаюсь создать некоторый код dll управляемой библиотеки, зависящий (и расположенный в том же каталоге, что и) от собственного поставщика fbembed.dll и .net, а затем вызываю эту dll управляемой библиотеки из управляемого кода, находящегося в другом месте (другой проект в другом каталоге). ) .... все взрывается, говоря, что fbembed.dll не может быть найден ... даже когда код управляемой библиотеки, который фактически вызывает fbembedd.dll через провайдера, находится в том же каталоге, что и fbembed.dll.

IN SHORT ... требование быть «в том же каталоге» не только распространяется на непосредственно вызывающий код, но и на весь стек вызовов, достигающий самой точки входа.

[Примечание: я пробовал это с Visual C # 2010 .net 4.0, Monodevelop 2.4, mono 2.8, mono 2.10, .net поставщик Firebird версии 2.6.5 ... без касания файла .config в собственном каталоге fbembed.dll ]

Эта проблема немедленно исчезает после переноса окончательного метода вызова (т.е. основного метода) в каталог, содержащий fbembed.dll и поставщика .net FirebirdSql.Data.FirebirdClient.dll

1 Ответ

1 голос
/ 05 января 2012

Используйте параметр ClientLibrary в строке подключения (или в классе FbConnectionStringBuilder), чтобы указать поставщику ADO.NET, где находится файл fbembed.dll.

...