リンクから簡単なアプリを試しました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 を実行しようとしましたが、セットアップ アプリを作成しても同じエラーが発生します。私の開発マシンでのみ動作します。