2008年8月31日日曜日

[.NET]ActiveX(COM)ラッパークラスのGAC登録

ちょっと前に、.NETアセンブリからActiveX(COM)を呼び出すようなことをやっていました。
しかしそのときは、参照設定の追加→COMのタブから該当のCOMコンポーネントを選択する。というやり方をとっていました。この方法では、自動的にCOM呼び出し用のinteropアセンブリが生成されます。

GDD Blog: [.NET]ActiveX(com)呼び出し(その2)などでいろいろ試していましたが、今回はちょっと要件が違っており、関連するアセンブリと一緒にGACに登録する必要がありました。

で、関連するアセンブリのAssemblyInfo.csにkeyファイルを指定しコンパイルすると、コンパイルエラーが発生しました。調べてみるとinteropアセンブリが署名されていないことが原因ということがわかりました。

その後タイプ ライブラリ インポータ (Tlbimp.exe)の説明にたどり着きました。よく説明を見るとパラメータにkeyファイルが指定できることがわかりました。keyファイルを指定してアセンブリを生成し、そのアセンブリを参照することによりコンパイルは通過。そして、GACに両方を登録することにより正しく動作しました。

原因の糸口がつかめず「ActiveX(COM)の処理を.NETに移植するか?」なんて話も出ましたが、とりあえずギリギリセーフでした。

0 件のコメント: