1

リンクから簡単なアプリを試しましたVisual Basic 6.0からVisual Basic .NETまたはVisual Basic 2005アセンブリを呼び出す方法

.net コード

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1

    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region

        ' A creatable COM class must have a Public Sub New() 
        ' without parameters. Otherwise, the class will not be 
        ' registered in the COM registry and cannot be created 
        ' through CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub

Public Function myFunction() As Integer
      Return 100
   End Function

    End Class

vb6 コード

Dim myObject As TestProj.COMClass1
Set myObject = New TestProj.COMClass1
MsgBox myObject.myFunction

.Net 4.0 と VS 2010 と VB6 を使用して私の開発マシンで動作します。ファイルを Windows Server 2008 R2 マシンにコピーし、Regasm AssemblyName.dll /tlb: FileName.tlb /codebase の形式を使用してアセンブリを登録し、アセンブリに強力な署名を付けると、エラー 429 が表示され、ActiveX コンポーネントを作成できません。レジストリを確認したところ、そこにクラス ID が表示されます。私は何が欠けていますか?ありがとう

また、RDS (リモート データ サービス) を使用して Com+ を使用して別のサーバーにオブジェクトを作成する従来の vb6 アプリがありますが、vb6 exe と同じサーバーで .Net dll を実行するように変更したいだけです。.Net dll (tlb) を登録せずに別のクライアント PC からサーバー上で exe を実行する方法はありますか? またはすべてをパッケージ化するために setup.exe を作成する必要がありますか? Virtual XPMode で同じ exe を実行しようとしましたが、セットアップ アプリを作成しても同じエラーが発生します。私の開発マシンでのみ動作します。

4

0 に答える 0