2012-01-15 8 views
2

私はカスタム.Netデータプロバイダを構築しており、SQL Integration Services(SSIS)で使用できるように展開しようとしています。私が実行している問題は、Win32 DLLでアンマネージメソッドを参照していることです。データプロバイダがSSISで動作するには、マネージドプロバイダDLLに署名し、グローバルアセンブリキャッシュ(GAC)に展開する必要があります。私はビジネスインテリジェンス開発Studio(BIDS)での私のデータプロバイダを使用しようとすると、それは私に次のエラーを与える:GACにデプロイされるカスタム.Netデータプロバイダからアンマネージコードを呼び出す際に使用するDLLはどこに配置しますか?

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システム変数に追加します。私は同じディレクトリに管理されていないとマネージアセンブリとフォームアプリで自分のデータプロバイダを使用すると、すべてがどのなく動作:

(絶望のうちの)側注System32ディレクトリに管理されていないDLLのを置く

  • 問題。

    サイドノート2:私は、このデータプロバイダがSSISだけのより多くの場所で作業したいと考えています。また、SQL Serverのリンクサーバー、SSRSのデータソース、Visual Studioのデータソース、Entity Frameworkなどで動作するようにしたいと考えています。DLLを1つの場所に配置することをお勧めしますこれらのすべて。

    ありがとうございます!

    クリス

  • 答えて

    1

    これは、64ビットOS上で動作する32ビットアプリケーションであれば、あなたはC:\Windows\SysWOW64ディレクトリにDLLをインストールする必要があります。

    それ以外の場合は、C:\Windows\System32になります。

    どちらの場合でも、インストールするマシンに適切なドライブとディレクトリを使用する必要があります。

    +0

    これは完全に機能します。ありがとう! :) –

    関連する問題