2010-02-13 14 views

Répondre

12

Je pense que vous devriez juste pouvoir ajouter la bibliothèque qui contient le type de VB6 comme référence dans votre projet C#. Visual Studio créera un assembly interop à la volée, et vous aurez accès à tous les types dans la bibliothèque VB6 via Runtime Callable Wrappers.

L'outil qui crée l'assemblage interop est TLBIMP.EXE, et vous pouvez l'exécuter vous-même si vous voulez plus de contrôle sur le processus, par ex. si vous souhaitez créer un Primary Interop Assembly pouvant être partagé par plusieurs composants gérés.

+0

w.r.t "la bibliothèque", vous pouvez accéder à un fichier EXE ActiveX VB6 ou à une DLL de classe et l'ajouter comme référence. L'assemblage interop sera automatiquement créé pour vous. –

+0

@ bob denny. Ce n'est pas toujours facile, l'IDE VS choisit une option qui rend difficile, voire impossible, le travail avec des structures de données complexes ayant des matrices. Il est préférable d'utiliser tlbimp à moins d'avoir des entrées et des sorties très simples. – Steve

+1

@Steve Intéressant. Pouvez-vous donner plus de détails sur ce problème? Un lien serait utile. – MarkJ

0

Bien sûr, vous avez juste besoin d'en faire un objet COM.

+0

DLL créée avec VB6 sont toujours (bien, presque toujours) COM DLL. Pour les rendre autrement, vous devez passer par beaucoup de cerceaux de type art noir. – BobRodes

3

Comme l'indique @Wayne dans son article (+1), c'est absolument possible.

Je pencherais pour un rewrite de votre classe VB6:
Si vous avez la source VB6 et le financement, je vous recommande de réécrire la classe en C#.
Although VB6 may live forever:
Current support Statement for Visual Basic 6.0

+0

Je suis confus pourquoi les gens votent ceci, pourtant donné @sashaeve net -5 pour une réponse équivalente. –

+0

@Ben Voigt: Pourriez-vous pointer vers la réponse à laquelle vous faites référence? –

+0

@Kb: C'est sur cette page, mais vous avez besoin de beaucoup de réputation pour voir les réponses supprimées. Il a dit: "Vous devez le convertir en classe VB.NET et que [sic] il est possible d'utiliser ce code dans votre application C#". –