1

VB6 に公開されている .NET アセンブリをセットアップしていますが、アセンブリのファイル名が、VB6 がクラスを作成するときに使用する名前と干渉しているようです。

VB6 内で作成されたオブジェクト インスタンスを制御できるようにする、提供できる .NET 属性または設定があるかどうかを確認しようとしています。それは純粋に審美的なものであり、すべてが単純にコンパイルされることはわかっていますが、見栄えがするのが好きです。

私の .NET アセンブリには次の属性があります。ProgID はコンパイルにまったく影響を与えないように見えることに注意してください。

<
ComSourceInterfaces(GetType(IManagerEvents)),
Guid(Manager.ClassId),
ClassInterface(ClassInterfaceType.None),
ProgId("IdealposWebIt.Manager")
> _
Public Class Manager
    Implements IManager

VB6 の世界では、このクラスを参照すると、アセンブリのファイル名が破損して ProgID の一部になるようです。

Private Sub Form_Load()
    Dim orderManager As Idealpos_WebIT_Connector.Manager
    Set orderManager = New Idealpos_WebIT_Connector.Manager

それを変更するために私にできることはありますか?私はそれを吸うだけでいいですか?

すべてがVB6内で正しく作成および実行されていることに注意してください。ただし、うまく表示したいだけです。

4

1 に答える 1

1

.NET に MIDL コンパイラがないと、COM に公開される名前を制御できないという C++ 資料をよく検索して確認した後。

プロジェクトのアセンブリ名で使用する名前は、COM ベースのアプリケーション (アーリー バインド) で使用するために COM 化される名前です。したがって、この場合、プロジェクトのアセンブリ名は次のようにIdealpos.WebIT.ConnectorなりIdealpos_WebIT_Connector、COM の短い名前を作成するには、.NET プロジェクト名を変更する必要がありますが、これは常に喜んで行うとは限りません。

これが将来人々に役立つことを願っています。

于 2012-07-17T07:15:46.940 に答える