Я рассматриваю запись консольного приложения в C#, и я хочу включить историю, завершение и особенности редактирования командной строки что-то как GNU readline (но не обязательно настолько обширный!)
Существует ли существующая библиотека для .NET, который обеспечивает этот тип функциональности? Я предполагаю, что одна опция состояла бы в том, чтобы использовать interop сервисы для вызова GNU readline. Но существует ли собственная опция?
Вы можете проверить getline.cs Мигеля де Икаса (ссылка в сообщении в блоге не работает, теперь код можно найти здесь ). В зависимости от того, какие функции readline вам действительно нужны, этого может быть достаточно для ваших целей.
Приятно то, что все это содержится в одном (отсюда и 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 .
Она предоставляет .NET-интерфейс для библиотеки GNU Readline - она немного сырая, только версия 0.0.1, и я когда-либо видел, чтобы она работала только во время Mono.
Вы должны быть осторожны и с лицензированием... AFAIK все, что связывает библиотеки GNU Readline, должно выпускаться под GPL.
проект, целью которого является эмуляция большинства функций RedLine, - это Deveel ReadLine , но должен сказать, что он не поддерживается. В прошлый раз, когда я использовал его, он очень хорошо работал как в .NET, так и в Mono, хотя есть небольшая ошибка при отмене строки, которая была автоматически свернута.