COM から見える単純な .NET プロジェクト (クラス ライブラリ) を作成しました。VB6で動く!
コードは次のようになります。
[ComVisible(true)]
[ClassInterface(ClassInterfaceType::AutoDual)]
public ref class MyObject
{
// Some methods and values
}
アセンブリは適切に署名され (GAC にない場合は必要ありません)、登録されています ( regasm MyProject.dll /tlb /codebase
)。
次に、TLB ファイルが私の VB6 プロジェクトで参照され、すべて問題ありません! クラスとその中のパブリック メソッドにアクセスできました。
インターネット上でClassInterfaceType::AutoDual
は、このアセンブリを使用するアプリケーションが機能しなくなる可能性があるバージョン管理の問題が発生する可能性があるため、このアセンブリを使用することはお勧めできません。
しかし、私の場合、それは本当に問題なのでしょうか? このアセンブリは、VB6 プロジェクト (早期バインディング) でのみ使用されます。
すべての新しいリリースで、これらの手順 (署名、登録など) を元に戻します。このソリューションのバージョン管理の問題はありますか?
[GUID("...")]
とにかく、いくつかの属性を書いてもらえますか?
GUID は Visual Studio によって自動的に生成されるため、クラスはコンパイルごとに同じ GUID ではありません。そうですか?