1

私はVB6に見えるように管理したアセンブリを持っていて、それは機能しますが、VB5で同じことを達成するのに問題があります。

VB6の場合、アセンブリを作成し、COMで表示できるようにし、COMオブジェクトとして登録しました。アセンブリは、VB6の参照リストに表示され、正常に使用できます。オブジェクトブラウザには、アセンブリ内のメソッドも表示されます。アセンブリとそのTLBをVB5開発に使用される仮想ワークステーションにコピーし、Regasmを実行しました。

C:\>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
\regasm arserviceinterface.dll /tlb:arserviceinterface.tlb
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.3053
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Assembly exported to 'C:\Projects\AR\3rd Party\ARService\arserviceinterface.tlb'
, and the type library was registered successfully

仮想W/SはWin2kであり、.NET Fx 3.5はなく、2.0だけであることに注意してください。

アセンブリはVB5で選択できる参照に表示されますが、アセンブリのメソッドはオブジェクトブラウザに表示されず、通常は使用できません。私が行っていない手順があるか、VB5がそのようなCOMオブジェクトの使用方法を認識していません。VB5のセットアップは、VB6がインストールされているのと同じワークステーションではなく、仮想ワークステーション上にあることに注意してください。

何か案は?私が思いついたのは、問題のワークステーションで厳密な名前を生成して使用する必要があるかもしれないということですが...

4

1 に答える 1

4
  1. アセンブリが.Net3.5の機能に対して構築されていないことを確認してください
  2. OLE / COM Object Viewerツールをコピーします(Windows SDKがインストールされているマシンから入手できます)。それを実行し、[すべてのオブジェクトの表示]に移動し、リストをオブジェクトまで下にスクロールして右クリックし、インスタンスを作成します。
    2.1 OLE / COM Object Viewerがインスタンスを作成できない場合、問題はオブジェクトがマシンにどのように登録されているか、または.Netがどのようにインストールされているかにあります。
    2.2 OLE / COM Object Viewerがインスタンスを作成できる場合、問題はVB5の消費方法にあります。
  3. IUnknownVB5が実際にアーリーバインディング(ベースのオブジェクト)をサポートしているのか、レイトバインディング()のみをサポートしているのかを思い出せませんIDispatch。私は、VB5がdispinterfacesのみをサポートしているのではないかとひそかに疑っています。そして、IUnknownのサポートを導入したのはVB5.5でした。だからそれはあなたの問題かもしれません。
于 2010-04-02T22:08:49.957 に答える