Comment convertir le code VB6 en C#? [fermé]

est-ce que quelqu'un sait comment convertir le code VB6 en C#?

y a-t-il un outil qui puisse faire ça pour moi?

33
demandé sur MarkJ 2008-10-07 21:48:13

10 réponses

VisualStudio offre (ou du moins offert) un assistant pour faire une conversion de VB6 à VB.NET (qui pourrait alors être convertie en C# avec un peu de travail, éventuellement aidé par #VB.NET < - > C # converter), mais la dernière fois que je l'ai utilisé, pour quelque chose de non-trivial il y avait beaucoup de travail manuel à faire donc je soupçonne que vous êtes probablement mieux réécrire ou porter à la main si c'est une grande et/ou importante application.

27
répondu theraccoonbear 2008-10-07 17:54:28

Il pourrait apparaître comme un peu culotté, mais votre cerveau pourrait être le meilleur outil à utiliser. Ça pourrait valoir le coup de réécrire.

Peut-être que vous n'avez pas besoin de portage. Le VB6 pourrait-il être transformé en composant COM? Port à COM, Appel de C#, arrivée à temps pour le juge Judy.

11
répondu Derek Smyth 2008-10-07 19:52:20

Comme quelqu'un qui a fait un tas de fois, ce n'est pas un processus facile. Vous pouvez utiliser le VB6 pour VB.Net outil comme indiqué dans cette réponse , puis utiliser soit réflecteur ou SharpDevelop pour convertir en C#. Avec la conversion SharpDevelop, quelques mises en garde. Il bousille toutes les références de tableau et pense qu'ils sont des appels de fonction, et tous les opérateurs logiques sont convertis en opérateurs logiques bitwise (et devient & pas &&). Avec réflecteur vous perdez un tas de trucs. Aussi le convertisseur de Studio visuel échoue sur beaucoup de grands projets, juste accroche et ne complète jamais.

une fois que vous avez converti votre code en C#, vous devez commencer le vrai travail. La conversion vous obtient au mieux 50% du chemin là-bas, vous devez réparer une tonne de choses (vous verrez votre code jonché de TODO), refactor une tonne de choses, et à la fin vous êtes laissés avec C# qui est une représentation de votre VB6 -- à moins que vous ayez le code VB6 très agréable pas un endroit où vous voulez vraiment être. De plus, tout votre code avec les helpers VB doit être jonché plutôt que D'utiliser les fonctions DotNet appropriées (toutes les fonctions string sont des helpers plutôt que des objets class, par exemple 0. Si vous avez utilisé des variantes à tous ceux tous doivent être réécrits. Si vous avez utilisé beaucoup d'appels API, ils ont tendance à avoir besoin d'être réécrits.

À la fin, vous obtiendrez une base, mais la conversion d'un grand projet (20-30 formes, 30 classes, 30 modules) peut prendre plusieurs mois. Réécrire à partir de zéro, cependant, peut prendre deux fois plus de temps et vous perdez toute la logique de votre entreprise. Donc, cela peut être fait (je l'ai fait avec 3 ou 4 grands projets), mais il n'y a pas de panacée, pas de balle d'argent, et tout outil qui dit qu'il le fera pour vous seul, ment.

9
répondu Kris Erickson 2017-05-23 12:01:51

ouvrez votre projet avec une nouvelle version de Visual Studio, convertissez votre code en VB.Net puis téléchargez .net Reflector pour vous aider avec la transformation C#.

bonne chance!

8
répondu sebagomez 2008-10-07 18:23:09

Artinsoft (maintenant renommé en Mobilize.Net ) fait justement cela, en particulier le compagnon de mise à niveau de base visuelle .

cependant, même après avoir utilisé le VBUC il y a encore quelques parties du système qui doivent être migrées/vérifiées à la main. Mais il est généralement beaucoup moins de l'origine du problème. Et certaines des questions de migration ont été résolus grâce à l'expérience du passé migration.

Artinsoft est la même compagnie qui a construit le magicien qui embarque avec Visual Studio, mentionné dans le post de theraccoonbear. Cependant, si Je ne me trompe pas, l'assistant ne fait que migrer VB6 vers VB.Net.

divulgation complète: je travaille pour Artinsoft

8
répondu Esteban Brenes 2016-09-15 15:59:24

la réponse courte est que VB6 et VB.NET (et par conséquent C#) sont des langues séparées mais des langues apparentées. Il y a beaucoup de subtiles (Integer étant Int32 au lieu de Int16) et de grandes différences (graphiques, forme, et les moteurs d'impression) entre les deux plates-formes. Vous devez traiter cela comme si vous êtes en train de vous convertir à une plateforme complètement différente.

les questions sont examinées plus en détail ici

comment commuter une grande application de VB6 à VB.NET

4
répondu RS Conley 2017-05-23 12:01:51

Microsoft recommends Artinsold's Visual Basic Upgrade Companion (VBUC) .

Microsoft et ArtinSoft se sont associés pour vous offrir une licence VBUC gratuite. Le code de réduction ci-dessous peut être utilisé pour acheter une licence qui vous permettra de migrer une application de jusqu'à 10.000 lignes de code VB6 à VB.NET ou C# gratuitement. Il peut également être appliqué lors de l'achat d'une licence plus grande.

c'est pas parfait, le code résultant nécessite encore beaucoup de corrections manuelles jusqu'à ce qu'il compile, mais encore cet outil vaut la peine de donner un coup de feu.

3
répondu Konstantin Spirin 2012-12-27 01:00:03

une question à se poser est, combien est-il important D'avoir C# plutôt que VB.NET Je ne sais pas. Si vous convertissez une grande application, peut-être que vous devriez juste mettre à niveau VB.NET, qui sera moins cher.

il y a certaines fonctionnalités dans VB6 sans équivalent exact en C# (le traitement des erreurs, la reliure tardive, etc.). Demandez-vous pourquoi il vaut la peine de l'effort manuel pour convertir ceux, quand vous pourriez aller à VB.NET ce qui les soutient.

et si vous ne le faites pas croyez-moi (et personne n'a voté pour ma réponse, sob sob!) peut-être croirez-vous Francesco Balena et Dan Appleman (dans un livre Moving to VB.NET ) qui sont d'accord avec moi.

2
répondu MarkJ 2009-01-26 18:29:29

chez GreatMigrations, nous le faisons à la main -- nous utilisons nos mains pour développer un compilateur VB6/COM. Le compilateur lit un VBP (ou un groupe de vbps) et des bibliothèques de COM référencées et construit un "modèle sémantique". Ce modèle est un ensemble extrêmement détaillé de tables de symboles et de flux opcode qui décrivent de façon complète et précise toutes les structures d'information définies et les opérations effectuées par le système source.

l'outil applique alors une série d'algorithmes qui Modifier et restructurer le modèle pour le rendre plus compatible avec .NET et appliquer éventuellement des transformations personnalisées, par exemple pour remplacer des composants COM par des classes .NET. Les règles de transformation sont conçues par les gens et créées "à la main" pour répondre à leurs besoins uniques.

enfin, le modèle est "exécuté" mais au lieu d'attribuer le modèle de données et d'exécuter les opérations, nous écrivons les structures de fichiers, le modèle de données, et les opérations dans la notation de la cible plate. Nous pouvons écrire à la fois VB.NET et C# en utilisant cette approche. Nous utilisons également ce processus pour migrer les sites ASPX vers ASPX, (nous avons également un produit FORTRAN-to-C Multi-dialecte)

l'approche ne produit pas de logiciel prêt à la production au premier essai, mais elle peut être améliorée et rendue capable de produire un" meilleur " logiciel en modifiant la configuration de l'outil et en relançant le processus de traduction. L'avantage de notre outil est sa répétabilité, sa vitesse et sa flexibilité qui facilite une méthodologie agile de réécriture assistée par outil. Les équipes de migration de L'OMI qui tirent parti de notre approche bénéficieront de l'affectation de beaucoup plus de ressources à l'évaluation des solutions de rechange pour la refonte et à l'amélioration du processus de développement plutôt qu'à la collecte des exigences fonctionnelles, au codage manuel et à l'essai. Ils bénéficieront en fin de Compte d'un système plus maintenable et d'une reproduction beaucoup plus fidèle de la fonctionnalité de l'application d'origine après la migration ainsi que d'un contrôle et d'une visibilité pendant la migration.

une édition d'essai de notre outil est disponible ici gmStudio demande de piste télécharger . Il vous permettra d'expérimenter avec des codes ASP/VB JUSQU'à 10k LOC et fonctionne jusqu'à 30 sessions.

1
répondu mark 2011-03-15 19:14:52