是否存在类似于GNU readline的.Net库?

我正在考虑用C#编写一个控制台应用程序,我希望将历史,完成和命令行编辑function纳入GNU readline(但不一定非常广泛!)

是否有.net的现有库提供此类function? 我想一个选择是使用互操作服务来调用GNU readline。 但是有原生选择吗?

您可能想要查看Miguel de Icaza的getline.cs (博客文章中的链接已损坏,现在可以在此处找到代码)。 根据您实际需要的readline的function,它可能足以满足您的需要。

好的是,它全部包含在一个(因此getline.cs)文件和MIT X11许可。

使用它非常简单。

如果你想尝试,只需下载文件并编译它:

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

#ifdef DEMO部分还显示了基本的REPL:

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

我唯一知道的是Mono-Readline 。

它为GNU Readline库提供了一个.NET接口 – 它有点原始,只有0.0.1版本,我只看到它在Mono运行时运行。

你也应该小心许可…… AFAIK任何链接GNU Readline库的东西都需要在GPL下发布。

一个旨在模仿RedLine大部分function的项目是Deveel ReadLine ,但我不得不说它没有得到维护。 上次我使用它在.NET和Mono上都运行得很好,虽然在取消自动折叠的线时有一个小错误。