Где я могу развернуть библиотеки DLL, которые будут использоваться при вызове неуправляемого кода из пользовательского поставщика данных .Net, который будет развернут в GAC? - PullRequest
2 голосов
/ 15 января 2012

Я создал собственный поставщик данных .Net и пытаюсь развернуть его, чтобы использовать его в службах интеграции SQL (SSIS).Проблема, с которой я сталкиваюсь, заключается в том, что я ссылаюсь на неуправляемые методы в Win32 DLL.Чтобы мой провайдер данных работал в SSIS, я должен подписать библиотеку DLL управляемого провайдера и развернуть ее в глобальном кэше сборок (GAC).Когда я пытаюсь использовать своего поставщика данных в Business Intelligence Development Studio (BIDS), он выдает мне следующую ошибку:

TITLE: Connection Manager
------------------------------

Test connection failed because of an error in initializing provider. Unable to load DLL 'RTB32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

------------------------------
BUTTONS:

OK
------------------------------

Как / где я должен развернуть неуправляемый код вместе с моим поставщиком, чтобыоно работает?Вещи, которые я пробовал:

  1. Встраивание библиотек DLL в управляемую библиотеку DLL.
  2. Добавление неуправляемых библиотек DLL в GAC.
  3. Добавление расположения неуправляемых библиотек DLL всистемная переменная PATH.
  4. Помещение неуправляемых библиотек DLL в каталог System32 (в отчаянии)

Стороннее примечание: Когда я использую свой поставщик данных в приложении Forms с неуправляемым иуправляемых сборок в одном каталоге, все работает без проблем.

Примечание 2: Я хочу, чтобы этот поставщик данных работал в большем количестве мест, чем только SSIS.Я также хочу, чтобы он работал в качестве связанного сервера в SQL Server, в качестве источника данных в SSRS, в качестве источника данных для Visual Studio, в Entity Framework и т. Д. Я бы предпочел разместить библиотеки DLL в одном месте, которое будет работать длявсе это.

Спасибо!

Крис

1 Ответ

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

Если это 32-разрядное приложение, работающее в 64-разрядной ОС, то вам нужно будет установить библиотеки DLL в каталог C:\Windows\SysWOW64.

В противном случае они должны перейти в C:\Windows\System32.

Очевидно, что в обоих случаях вам потребуется использовать соответствующий диск и каталог для машины, на которую вы устанавливаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...