Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有类似于GNU readline的.Net库?_C#_.net_Readline - Fatal编程技术网

C# 有没有类似于GNU readline的.Net库?

C# 有没有类似于GNU readline的.Net库?,c#,.net,readline,C#,.net,Readline,我正在考虑用C#编写一个控制台应用程序,我想结合历史记录、完成和命令行编辑功能,比如GNU readline(但不一定像那样广泛!) 是否有现有的.net库提供此类功能?我想一个选择是使用互操作服务调用GNU readline。但是有没有本地选项呢?我只知道 它为GNU Readline库提供了一个.NET接口——虽然它有点原始,只有0.0.1版,我只见过它在Mono运行时运行 你也应该小心使用许可证。。。AFAIK任何链接GNU Readline库的东西都需要在GPL下发布。一个旨在模拟Red

我正在考虑用C#编写一个控制台应用程序,我想结合历史记录、完成和命令行编辑功能,比如GNU readline(但不一定像那样广泛!)


是否有现有的.net库提供此类功能?我想一个选择是使用互操作服务调用GNU readline。但是有没有本地选项呢?

我只知道

它为GNU Readline库提供了一个.NET接口——虽然它有点原始,只有0.0.1版,我只见过它在Mono运行时运行


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

一个旨在模拟RedLine大部分功能的项目是,但我不得不说它没有得到维护。上次我使用它时,它在.NET和Mono上都运行得很好,尽管在取消自动折叠的行时出现了一个小错误。

您可能想查看Miguel de Icaza的(博客文章中的链接已断开,现在可以找到代码)。根据您实际需要的readline功能,它可能足以满足您的需要

很好的一点是,它都包含在一个单独的(因此是getline.cs)文件中,并获得MIT X11许可

使用它很容易

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

C:\> csc.exe /d:DEMO getline.cs 
C:\> getline.exe
shell>
#ifdef演示
部分还显示了基本REPL:

var le = new LineEditor("whatever");
string s;

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

老问题,但仍然相关,因为它出现在谷歌搜索结果。提及以下内容是有意义的:

现在是个不错的选择。引用自述:

ReadLine是一个类似GNU ReadLine的库,内置于纯C语言中。它可以作为内置的
Console.ReadLine()
的替代品,并带来一些从unix shell中获得的终端好处,如命令历史导航和选项卡自动完成

它是跨平台的,可以在支持.NET的任何地方运行,以netstandard1.3为目标意味着它可以与.NET核心以及完整的.NET框架一起使用

许可证
该项目是根据MIT许可证授权的

您是否考虑过PowerShell管理单元?这是我现在能想到的.NET世界中最“原生”的选项。也许只有我一个人,但当你开始考虑用这种方式增强用户界面的体验时,你真的应该开始关注Windows窗体。我不确定我是否遵循?您是否建议我将应用程序编写为powershell管理单元?这难道不是给了我PowerShell的标准命令行编辑功能(即,基本的Windows控制台功能加上奇特的选项卡完成功能)吗?我追求的不仅仅是历史搜索、单词删除之类的东西。nobugz-GUI应用程序很好,但我仍然希望允许用户命令行风格的交互和命令行编辑。考虑电源外壳与电源外壳ISE。就我个人而言,我讨厌ISE命令行编辑工具,我更喜欢控制台版本,但我想要多一点(因为控制台IO不可自定义,所以无法添加)。我尝试了CSharpRepl项目中的getline库,但对选项卡完成的支持有限。此外,完成特性本身也很难实现。也许只是我的极限…但链接并没有断开o.o