COM相互運用というものです。
.NETで作成したアセンブリをCOMとして利用できるという代物。
ExcelVBAなんかからも参照できます。

手順

手順としては

  1. クラスライブラリのプロジェクト(orソリューション)を作成
  2. プロジェクトのプロパティの「ビルド」タブ内の「COM相互運用機能の登録」にチェック
  3. インターフェイスとクラスを作成する。
  4. ビルドする
  5. できたDLLを他の環境でも利用したい場合はregasmで登録

上記の手順になります。
あと、VisualStudioは管理者権限で実行しておいてください。

クラスの作成について

COM相互運用では、公開用のインターフェイスとインターフェイスを実装したクラスが必要になります。

まずはインターフェイスから見ていきます。

lang-vb linenums:1

namespace comtest{

   [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
   [Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
   [ComVisible(true)]
   public interface IComTest{
   }

} }} ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。

設定説明
InterfaceType???
GUIDインターフェイスを識別するGUID
ComVisible参照の可否を指定

次にクラスです。

lang-vb linenums:1

namespace comtest{

   [ClassInterface(ClassInterfaceType.None)]
   [Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
   [ComVisible(true)]
   [ProgId("comtest.ComTest")]
   public class ComTest : IComTest{
       public string TestProperty{
           get;
           set;
       }
       public void testMethod();
   }

} }}

ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。

設定説明
ClassInterface???
GUIDインターフェイスを識別するGUID
ComVisible参照の可否を指定
ProgId参照する名称の指定。無くてもOK

こんなかんじでインターフェイスとクラスを作って、ビルドしてregasmやればできます。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-14 (月) 15:25:21