次のようなクラスを持つ.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 経由で参照できるようにするにはどうすればよいですか?