2010-02-13 3 views

Antwort

12

Ich denke, Sie sollten nur in der Lage sein, um die Bibliothek hinzufügen, die als Referenz in Ihrem C# -Projekt Ihren VB6 Typen enthält. Visual Studio erstellt im Handumdrehen eine Interop-Assembly, und Sie erhalten über Runtime Callable Wrappers Zugriff auf alle Typen in der VB6-Bibliothek.

Das Werkzeug, das die Interop Assembly erstellt, ist TLBIMP.EXE, und Sie können dies selbst ausführen, wenn Sie mehr Kontrolle über den Prozess, z. wenn Sie eine Primary Interop Assembly erstellen möchten, die von mehreren verwalteten Komponenten gemeinsam genutzt werden kann.

+0

w.r.t "die Bibliothek", können Sie zu einer VB6 ActiveX EXE oder DLL mit Klassenlager navigieren und sie als Referenz hinzufügen. Die Interop Assembly wird automatisch für Sie erstellt. –

+0

@ Bob Denny. Es ist nicht immer so einfach, die VS IDE wählt eine Option, die das Arbeiten mit komplexen Datenstrukturen, die Arrays haben, schwierig, wenn nicht gar unmöglich macht. Es ist besser, tlbimp zu verwenden, wenn Sie nicht sehr, sehr einfache Ein- und Ausgänge haben. – Steve

+1

@Steve Interessant. Kannst du mehr Details zu diesem Problem geben? Ein Link wäre nützlich. – MarkJ

0

Sicher, Sie müssen es nur ein COM-Objekt machen.

+0

DLL mit VB6 die erstellt wurden, sind immer (fast immer) COM DLL. Um sie anders zu machen, musst du viele schwarze Kunst-Reifen durchgehen. – BobRodes

3

Wie @Wayne in seinem Beitrag (+1) angibt, ist es absolut möglich.

ich für eine Rewrite Ihrer VB6 Klasse gehen würde:
Wenn Sie die VB6 Quelle und die Finanzierung haben, würde ich Ihnen empfehlen, die Klasse in C# zu schreiben.
Although VB6 may live forever:
Current support Statement for Visual Basic 6.0

+0

Ich bin verwirrt, warum die Leute dies wählen, gab aber @sashaeve net -5 für eine gleichwertige Antwort. –

+0

@Ben Voigt: Können Sie auf die Antwort zeigen, auf die Sie sich beziehen? –

+0

@Kb: Es ist auf dieser Seite, aber Sie brauchen viel Reputation, um gelöschte Antworten zu sehen. Er sagte: "Sie müssen es in VB.NET-Klasse konvertieren und als [sic] ist es möglich, diesen Code in Ihrer C# -Anwendung zu verwenden". –