私は単純な.NETプロジェクト(クラスライブラリ)をCOMで表示しました。それはVB6で動作します!ClassInterfaceType.AutoDualを使用することは、VB6であっても実際には悪い考えですか?
[ComVisible(true)]
[ClassInterface(ClassInterfaceType::AutoDual)]
public ref class MyObject
{
// Some methods and values
}
をアセンブリが適切に署名される(それはGACにない場合は不要)及び登録(regasm MyProject.dll /tlb /codebase
):
コードは、次のように見えます。
次に、私のVB6プロジェクトでTLBファイルが参照されていて、すべてOKです!私は自分のクラスとその中の公開メソッドにアクセスできました。
インターネット上で、多くの人々がClassInterfaceType::AutoDual
を使用するためのアセンブリを使用するアプリケーションを破ることができバージョニングの潜在的な問題のために、良いアイデアではないと言います。
しかし、私の場合、本当に問題はありますか?このアセンブリは、VB6プロジェクト(早期バインディング)でのみ使用されます。すべての新しいリリースでは
、私は戻って、ステップ(ように登録して、署名を)学位論文ありません。このソリューションのバージョン管理に問題はありますか?とにかく
、私はいくつかの[GUID("...")]
の属性を記述することができますか?クラスは、各コンパイル時に同じGUIDではありませんので
のGUIDは、Visual Studioのことで自動的に生成されます。そうですか?
返信いただきありがとうございます!明確にするために、プロジェクトでは、目的は以下のとおりです。1)VB6でのIntellisenseの使用2)次のようなオブジェクトを使用します。「Dim myobj As New MyObject」。それから、私の解決策はいいですね。 –
私はすでに私の答えで、自動補完はIntelliSenseと同じことであり、GetObjectを使用したくないことに取り組んでいます。明らかに、AutoDualの使用を強くお勧めします。 –
多くの感謝!要するに、(regasmで)アセンブリを適切にアンインストールして再インストールすると、自動生成されたGUIDとAutoDualを使用していても、バージョン管理に問題はありません。 DispIDはどうですか? –