3

次のようなクラスを持つ.exeアセンブリがあります

[Guid("2D9EBA5F-7E4A-418B-B151-4E703AEDF396")]
public interface MyInterface
{
   int MyMethod();
}
[GuidAttribute("D26278EA-A7D0-4580-A48F-353D1E455E50"),
ProgIdAttribute("My_prog"), ComVisible(true), Serializable]
public class MyInterface: MyClass
{
   public int MyMethod()
   {
     return 1;
   }
}

のように登録します。

regasm 1.exe /tlb 1.tlb

2 つの質問があります。

1) オブジェクトエクスプローラーの「COM」タブで開いています。アセンブリが表示され、そこにオブジェクトが表示されますが、このクラスにはメソッドが表示されません。どうしたの?

2) 2 番目のプロジェクトから参照しようとしています。参照の追加 -> COM (VS2010)。エラーが発生します:

「'assemblyname' への参照を追加できませんでした。

ActiveX タイプ ライブラリ 'path\1.tlb' は .NET アセンブリからエクスポートされたため、参照として追加できません。

代わりに .NET への参照を追加してください」

はい、この質問を読みました。しかし、アセンブリを直接参照するのではなく、COM 経由でアクセスしたいのです。アセンブリを COM 経由で参照できるようにするにはどうすればよいですか?

4

0 に答える 0