Cet article explique comment Migrer un programme Small Basic vers du C#.


Motivations

Il y a plusieurs raisons qui peuvent motiver une telle migration:

  1. Il n'y a pas d'option "Promouvoir" du Small Basic vers du code C#. Le C# est une très bonne alternative au VB comme langage après le Small Basic.
  2. L'option "Promouvoir Vers le Visua Basic" dans l'EDI (Environnement de Développement Intégré) Small Basic fonctionne très bien pour du code simple, mais pas aussi bien avec du code complexe. Par exemple les tableaux ne sont pas convenablement converti et du travail supplémentaire est souvent nécessaire.
  3. Une fois que le code est converti, un débogueur puissant est disponible dans Visual Studio pour aider à déboguer votre code ou comprendre comment fonctionne d'autre code.
  4. Promouvoir du code que vous connaissez déjà est une bonne méthode pour commencer à comprendre la syntaxe d'un nouveau langage.
  5. Par ce qu'on peut le faire et que c'est amusant.

Pré-requis

Vous avez besoin de 2 logiciels gratuits supplémentaires, ils doivent être installés en premier.

ILSpy

ILSpy permet de décompiler n'importe quel code .Net qui n'est pas offusqué (intentionnellement masqué) en code source lisible. C'est très utile pour comprendre SmallBasicLibrary.dll et d'autres DLLs d'extension pour lesquelles vous n'avez pas le code source. De plus, il permet de créer un projet complet Visual Studio avec le code décompilé d'un exécutable .Net.

Il peut être téléchargé depuis le site suivant, ou un simple recherche sur google/bing avec "ILSpy download" vous permettra de trouver la dernière version.

https://github.com/icsharpcode/ILSpy/releases/download/2.3/ILSpy_Master_2.3.0.1827_Binaries.zip

Décompresser simplement le contenu de l'archive téléchargée, aucune installation n'est nécessaire. Pour l'exécuter vous devez simplement vous rendre dans le dossier de décompression et de double-cliquer sur ILSpy.exe.

Visual Studio Express/Community

Attention depuis l'écriture de l'article original les versions Visual Studio Express n'existent plus, elles ont été remplacées par la version unique Visual Studio Community. Elle permet plus de chose, mais cet article s'applique de la même manière avec la version Community.

Visual Studio Community permet de créer des applications VB, C# et C++ qui peuvent être exécutées. Nous allons juste utiliser les fonctionnalités C#. Il nécessite un gros téléchargement et un enregistrement gratuit est nécessaire pour finaliser, mais l'installation est relativement simple. Ce logiciel est également nécessaire pour créer des extensions Small Basic.

Il peut être téléchargé depuis cette adresse: Visual Studio Communauté

Conversion

En premier nous créons un exécutable Small Basic et ensuite nous le convertissons en projet Visual Studio.

Créer un exécutable Small Basic

La première chose dont nous avons besoin est un exécutable Small Basic compilé. Pour cet exemple nous utiliserons un exemple complexe en utilisant l'extension LitDev (de l'auteur de l'article original) ; l'exemple de création d'un de labyrinthe en 3D. Vous pouvez faire cela avec tous les exécutable Small Basic exe, mais nous en choisissons un grand et complexe pour la démonstration et les tests.

Pour créer l'exécutable Small Basic, enregistrez simplement le programme dans l'EDI Small Basic et exécutez le. Une fois compilée, il y aura un .exe créé dans le même dossier que votre fichier de code source Small Basic *.sb. Pour cet exemple le fichier .exe est LD3DMazeGame.exe.

Convertir en Projet VS

Ensuite démarrons ILSpy et ouvrons l'exécutable généré en utilisant File->Open et naviguer jusqu'a votre exécutable (LD3DMazeGame.exe). Vous pouvez également juste glisser-déplacer l'exécutable dans le panneau gauche de ILSpy depuis l'Explorateur Windows.

Le code pour le fichier .Net sera lisible dans ILSpy, mais nous voulons juste exporter le tout dans un projet Visual Studio.

Assurons nous que la visualisation du code est en C# (par défaut), sélectionner l'exécutable dans la liste des assemblies .Net (panneau de gauche).

Ensuite cliquons sur File->Save Code... pour l'enregistrer quelque part.  Il est préconisé de le faire dans un nouveau dossier.

Une fois enregistré, ILSpy vous propose l'option d'ouvrir ce dossier, ce que vous pouvez faire, ou de vous y rendre avec un explorateur de fichier. Il doit y avoir deux fichiers:

  • _SmallBasicProgram.cs
  • LD3DMazeGame.csproj

Il est préférable à ce stade de recopier toutes les DLLs d'extensions requises et SmallBasicLibrary.dll dans ce dossier. Ces DLLs peuvent être trouvées dans le même dossier que l'exécutable de votre programme Small Basic. Dans notre cas on en a juste 2:

  • SmallBasicLibrary.dll
  • LitDev.dll

Avec Visual Studio

Nous ouvrirons le projet créé, définirons le Framework .Net 3.5 (ou 4.5 pour Small Basic 1.1) et ajouterons des références pour les DLLs requises. Et pour finir nous définirons le point d'entrée et pourrons exécuter le programme en C#.

Configuration Initiale

Dans le dossier avec le projet créé par ILSpy, faire un clic-droit sur le fichier .csproj et sélectionner "Ouvrir avec" "Microsoft Visual Studio".

Une fois que Visual Studio a ouvert le fichier, chercher l'Explorateur de Solution, un clic-droit sur le nom du projet (par exemple LD3DMazeGame) et sélectionner "Propriétés". Ensuite changer le Framework Cible sur le Framework .Net 3.5 pour un exécutable Small Basic 1.0, et Framework .Net 4.5 pour un exécutable Small Basic 1.1 dans l'onglet "Application" et cliquer sur Oui à la demande de confirmation.

Si le panneau "Explorateur de Solution" n'est pas visible (panneau droit dans l'image ci-dessous), alors vous pouvez l'ouvrir en utilisant le menu Affichage->Explorateur de Solution.

Enregistrer la solution avec le menu Fichier->Enregistrer Tout et accepter le nom et le dossier par défaut, ça doit être le même dossier que le fichier du projet csproj.

Maintenant ouvrons les "Références" dans l'Explorateur de Solution, nous remarquons qu'il y a des alertes.

Faire un clic-droit sur le dossier Références (juste au dessus des alertes jaunes dans l'Explorateur de Solution) et choisir Ajouter une Réf��rence...

Nous avons une fenêtre permettant d'ajouter des références. Dans l'onglet Parcourir utiliser le bouton "Parcourir..." pour rechercher les DLLs requises (dans notre cas LitDev.dll + SmallBasicLibrary.dll) que nous avons copié dans le dossier de notre solution VS. Une fois les références ajoutée, les alertes jaunes doivent disparaîtrent.

  

Le code source

Maintenant nous devons faire un changement dans le code source créé par ILSpy. Pour ouvrir le code source, un double clic sur le fichier _SmallBasicProgram.cs dans l'Explorateur de Solution.

Descendre vers la fonction _Main, nous avons besoin de la modifier en Main ou Main(string[] args) si vous voulons ajouter les arguments de ligne de commande. C'est le 'point d'entrée' où l'application commence à s'exécuter qui doit s'appeler 'Main', sans souligné au début.

Bien que la conversion de ILSpy fonctionne, du code créé peut être un peu bizarre ou "alambiqué". La plupart des commandes sont longues, incluant les informations d'espace de noms inutiles, par exemple toutes avec le préfixe '_SmallBasicProgram.' qui n'est pas nécessaire et peuvent être retirés avec un simple "Chercher et Rempalcer".

Maintenant cliquons sur "Démarrer" (flèche verte dans la barre de menu en haut) et le programme doit compiler et s'exécuter!

Exécuter le Programme

Nous pouvons exécuter en mode Debug (permettant le débogage détaillé, mais plus lent) ou en mode Release (débogage limité, mais plus rapide). Définir l'option Debug ou Release avant d'exécuter notre programme depuis l'option juste à droite de la flèche verte du démarrage. Le débogage permet d'exécuter le code pas à pas, de créer des points d'arrêt pour arrêter le code est voir les valeurs des variables ainsi que leur changement.

De même si notre programme plante lors du mode Debug, il s'arrête là où le plantage à eu lieu, souvent il nous indique pourquoi il à planté et nous permet de vérifier l'état actuel des variables qui permet de déterminer les causes du plantage.

Le code généré se trouve dans les sous-dossiers du dossier de la solution (lib/Debug et lib/Release).  Ce sont les dossiers où le code est exécuté et maintenant c'est l'emplacement de la propriété Small Basic Program.Directory.  C'est pourquoi tous les fichiers ou ressources doivent être copiées à cet endroit également.

Dans notre cas 3 fichiers image pour le jeu de labyrinthe, stones.jpg, wall.jpg et water.jpg.

Tous les fichiers requis pour exécuter l'application doivent être situés dans ce dossier et doivent être copiés tous ensemble si nous voulons exécuter le programme en dehaors de Visual Studio. Rappelons nous que les compilations Release seront généralement plus rapides et utiliserons mieux le code compilé, tandis que les compilations Debug sont utiles pendant l'étape de développement.

Dans notre cas le dossier Release ressemble à quelque chose ceci, les items sélectionnés sont seuls actuellement requis pour exécuter le programme et devant être copiés pour être utilisé ailleurs.

Il y a beaucoup d'aide en utilisant l'EDI Visual Studio et le C# sur MSDN et ailleurs.

Testez et amusez-vous !


Autres Langues