2012-01-15 16 views
2

我已經構建了一個自定義的.Net數據提供程序,並且正在嘗試部署它,以便我可以在SQL Integration Services(SSIS)中使用它。我遇到的問題是我在Win32 DLL中引用了非託管方法。爲了使我的數據提供者能夠在SSIS中工作,我必須簽署我的託管提供程序DLL並將其部署到全局程序集緩存(GAC)。當我嘗試使用商業智能開發套件(BIDS)我的數據提供商,它給了我下面的錯誤:我在哪裏部署DLL,以便在調用將被部署到GAC的自定義.Net數據提供程序的非託管代碼時使用?

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目錄(出於絕望)

側面說明:當我用我的數據提供與在同一目錄中的非託管和管理組件一個窗體應用程序,一切正常,沒有任何的問題。

備註2:我希望此數據提供程序能夠在更多地方使用SSIS。我也希望它在SQL Server中作爲鏈接服務器工作,在SSRS中作爲數據源,在Visual Studio中作爲數據源,在實體框架等中工作。我寧願將DLL放在一個可以工作的地方所有這些。

謝謝!

克里斯

回答

1

如果這是在64位操作系統上運行32位應用程序,則需要在C:\Windows\SysWOW64目錄中安裝的DLL。

否則,他們應該進入C:\Windows\System32

在這兩種情況下,顯然,您需要爲要安裝的計算機使用相應的驅動器和目錄。

+0

這完美的作品。謝謝! :) – 2012-01-15 01:10:51

相關問題