Existe-t-il une bibliothèque .Net similaire à GNU readline?

J’envisage d’écrire une application console en C # et je souhaite intégrer des fonctionnalités d’historique, de complétion et d’édition en ligne de commande, telles que GNU readline (mais pas nécessairement aussi complètes que cela!)

Existe-t-il une bibliothèque pour .net fournissant ce type de fonctionnalité? Je suppose qu’une option serait d’utiliser des services interop pour appeler GNU readline. Mais existe-t-il une option native?

Vous voudrez peut-être consulter getline.cs de Miguel de Icaza (le lien dans l’article du blog est cassé, le code est maintenant disponible ici ). Selon les fonctionnalités de readline dont vous avez réellement besoin, elles pourraient suffire à vos besoins.

La bonne chose est que tout est contenu dans un fichier unique (d’où getline.cs) et que MIT X11 est sous licence.

L’utiliser est assez facile.

Si vous voulez l’essayer, téléchargez simplement le fichier et comstackz-le:

C:\> csc.exe /d:DEMO getline.cs C:\> getline.exe shell> 

La partie #ifdef DEMO montre également le REPL de base:

 var le = new LineEditor("whatever"); ssortingng s; while ((s = le.Edit("my prompt> ", "")) != null) { // User input from command line / prompt now in "s". } 

La seule chose que je connaisse est Mono-Readline .

Il fournit une interface .NET à la bibliothèque GNU Readline – il est cependant un peu brut, uniquement de la version 0.0.1, et je ne l’ai jamais vue fonctionner que lors de l’exécution de Mono.

Vous devez également faire attention avec les licences … AFAIK, tout ce qui relie les bibliothèques GNU Readline doit obligatoirement être publié sous GPL.

Un projet qui vise à émuler la plupart des fonctions de RedLine est Deveel ReadLine , mais je dois dire qu’il n’est pas maintenu. La dernière fois que je l’ai utilisé, cela fonctionnait très bien à la fois en .NET et en Mono, bien qu’il y ait un petit bug lors de l’annulation d’une ligne qui a été automatiquement pliée.