私にはCOMに公開されている.NETアセンブリがあります。アセンブリには、2つのパブリックインターフェイスと1つのパブリッククラスがあります。アセンブリを作成すると、この警告が表示されます。COM相互運用機能の登録
(assemblyName.dll)には、COM相互運用機能に登録できるタイプが含まれていません。
私のアセンブリ情報には、次の行が含まれています。ウェブ上でこの問題を持つ
[assembly: ComVisible(true)]
ほとんどの人は、私が発見したことを、自分のアセンブリ情報で上記の行でそれを修正しました。これは私にとっては役に立たなかった。
また、クラスとインターフェイスの定義に[ComVisible(true)]
を追加しようとしましたが、それも役に立たなかった。ここで
デフォルトのコンストラクタを追加することを忘れてしまったときに、私は時々こう言います。 –
パブリックのデフォルトのコンストラクタを追加することはトリックでしたが、問題のクラスは.netコードからのみ構築されます。これは公的なデフォルトコンストラクタが提供されなかった理由です。この警告は、インターフェイスのみを含むアセンブリにも表示されると考えています。 – trampster
はい、インターフェイスだけのアセンブリでも同じ警告が表示されます。 VB6 ActiveX DLLには、少なくとも1つの公開可能なクラスが含まれている必要があります。しかし、管理されたコードによって構築され、COMコンポーネントに渡されるクラスを持つことができるように、.NETの世界では不必要に制限されているようです。メソッドの引数として。 – Joe