44 votes

Quel est le meilleur convertisseur C# vers VB.net ?

En cherchant sur l'interweb une solution à mes problèmes de VB.net, je trouve souvent des articles utiles sur un sujet spécifique, mais le code est en C#. Ce n'est pas un gros problème mais cela prend du temps de le convertir manuellement en VB. Il existe des sites qui proposent des convertisseurs de code de C# en VB et vice versa, mais la correction de tous les défauts après la conversion du code prend presque autant de temps que si je le faisais moi-même au départ.

Jusqu'à présent, j'utilise http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

Vous connaissez quelque chose de mieux ?

12 votes

Fermé, donc nous ne saurons jamais s'il y en a un meilleur qu'en 2008.

0 votes

L'ILSpy fonctionne pour moi en 2016. À peu près la même chose que la réponse acceptée de Reflector.

0 votes

Si quelqu'un atterrit ici, je me suis servi de Econ Netvert depuis longtemps et il fonctionne sans problème la plupart du temps. hors ligne . Assurez-vous de sélectionner ICSharp 4.0 dans la liste des fournisseurs (en haut à droite). Notez qu'il ne gère pas certaines des nouvelles constructions du langage (lambdas, fonctions anonymes, null-coalescing), mais sinon il fonctionne bien 95% du temps. Fonctionne dans les deux sens (C# <-> VB.NET) et peut aussi gérer des projets entiers. Notez que le projet n'est plus maintenu.

23voto

Darren Kopp Points 27704

Telerik a un bon convertisseur qui est basé sur SharpDevelop et qui a plutôt bien fonctionné au fil des ans, bien qu'il n'ait pas été mis à jour depuis des années (parce qu'il est basé sur SharpDevelop).

Je suis récemment tombé sur un convertisseur basé sur roslyn également . Je ne sais pas s'il fonctionne bien ou s'il est bien entretenu, mais comme il s'agit d'un logiciel libre, vous pouvez toujours le bifurquer et le mettre à jour si nécessaire.

0 votes

Il dispose d'une option pratique permettant de télécharger un fichier zip de la source, puis de télécharger un fichier zip contenant tous les fichiers convertis et un rapport d'erreur de conversion.

0 votes

Il ne convertit plus les commentaires ! Pas de support pour les commentaires

0 votes

S'il te plaît, vois mes modifications @eschneider. peut-être que le nouveau fonctionnera mieux pour toi.

18voto

Hallgrim Points 7198

Si vous ne trouvez pas un bon convertisseur, vous pouvez toujours compiler le code c# et utiliser le dissasembler dans Réflecteur pour voir le code Visual Basic. Certains noms de variables vont changer.

6 votes

Malheureusement, le décompilateur en VB dans Reflector est assez bogué. Souvent, vous vous retrouverez avec un code qui se compile, mais qui produit des résultats différents. Essayez ceci comme un cas de test pour évaluer les convertisseurs de code : double x = 3 / 2 ; double y = 3.0 / 2 ; int z = (int)(-3.5) ; "x" devrait être 1.0 (de nombreux convertisseurs produisent du code qui donne x=1.5), y devrait être 1.5, z devrait être -3 (de nombreux convertisseurs produisent du code qui donne z=-4)

0 votes

Note : pour voir les problèmes que j'ai mentionnés dans Reflector, vous devez utiliser des variables temporaires, sinon le compilateur C# optimise le calcul et le bug dans Reflector n'est pas déclenché.

13voto

TeamGB Points 213

12voto

Ricky AH Points 2366

SharpDevelop a un traducteur intégré entre C# et VB.NET. Ce n'est pas parfait (par exemple, les valeurs optionnelles en VB.NET n'ont pas d'équivalent en C#, la signature de la méthode de conversion doit donc être modifiée), mais vous pouvez gagner du temps, car vous effectuez toutes les opérations dans un IDE et non sur une page web (copier le code C#, coller, appuyer sur le bouton, copier le code VB.NET, coller sur l'IDE :P ).

11voto

Je pense que la meilleure chose à faire est d'apprendre suffisamment l'autre langue pour pouvoir réécrire à la main, il y a des différences assez difficiles dans certains aspects que je ne suis pas sûr qu'un convertisseur puisse gérer très bien. Par exemple, comparez ma traduction de C# à VB de ce qui suit :

public class FileSystemEventSubscription : EventSubscription
{
    private FileSystemWatcher fileSystemWatcher;

    public FileSystemEventSubscription(IComparable queueName, 
        Guid workflowInstanceId, FileSystemWatcher fileSystemWatcher) : base(queueName, workflowInstanceId)
    {
        this.fileSystemWatcher = fileSystemWatcher;
    }

devient

Public Class FileSystemEventSubscription
    Inherits EventSubscription  
    Private myFileSystemWatcher As FileSystemWatcher
    Public Sub New(ByVal QueueName As IComparable, ByVal WorkflowInstanceID As Guid, ByVal Watcher As FileSystemWatcher)
        MyBase.New(QueueName, WorkflowInstanceID)
        Me.myFileSystemWatcher = Watcher
    End Sub

Le C# provient de l'échantillon Custom Activity Framework, et j'ai bien peur d'avoir perdu le lien vers celui-ci. Mais il contient un héritage qui a l'air désagréable (d'un point de vue VB).

0 votes

Si vous mettez votre exemple dans roslyncodeconverter.azurewebsites.net il se convertit de la même manière que votre version écrite à la main (sauf que vous avez changé les noms des choses dans votre conversion faite à la main)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X