2010-01-07 3 views
6

C#에서 콘솔 응용 프로그램을 작성하려고합니다. GNU readline과 같은 역사, 완료 및 명령 줄 편집 기능을 통합하려고합니다. (반드시 그럴 필요는 없습니다!)GNU readline과 유사한 .Net 라이브러리가 있습니까?

에 대한 기존 라이브러리가 있습니다. 이러한 유형의 기능을 제공하는 net? 하나의 옵션은 interop 서비스를 사용하여 GNU readline을 호출하는 것입니다. 하지만 기본 옵션이 있습니까?

+0

당신이 생각이 있으 PowerShell은 스냅인 ? 이것이 바로 지금 생각할 수있는 .NET 세계에서 가장 '기본'옵션입니다. –

+0

그럴 수도 있지만, UI로 사용자 경험을 향상시키는 것에 대해 생각해보기 시작하면 Windows Forms를보기 시작해야합니다. –

+0

내가 잘 모릅니다? 내 응용 프로그램을 PowerShell 스냅인으로 작성 하시겠습니까? PowerShell의 표준 명령 줄 편집 (즉, 기본 Windows 콘솔 기능과 고급 탭 완성)을 제공하지 않습니까? 나는 그 이상이다 (역사 검색, 단어 삭제, 그런 것들). –

답변

9

Miguel de Icaza의 getline.cs을 체크 아웃 할 수 있습니다 (블로그 게시물의 링크가 깨 졌으므로 코드는 이제 here입니다). 실제로 필요한 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". 
} 
+0

CSharpRepl 프로젝트에서 getline 라이브러리를 사용해 보았지만 탭 완성을 제한적으로 지원합니다. 또한 완성 기능 자체는 구현하기가 어렵습니다. 어쩌면 내 한계 ... – Antonello

+0

하지만 링크가 깨지지 않았습니다. o.o –

2

내가 아는 유일한 것은 Mono-Readline입니다.

이 라이브러리는 GNU Readline 라이브러리에 .NET 인터페이스를 제공합니다.이 버전은 원시 버전이며 버전은 0.0.1이며, Mono 런타임에서만 실행되는 것을 본 적이 있습니다.

라이센스에 대해서도주의해야합니다 ... AFAIK는 GNU Readline 라이브러리를 링크하는 모든 항목을 GPL 하에서 릴리스해야합니다.

2

RedLine의 대부분의 기능을 모방하려는 프로젝트는 Deveel ReadLine이지만 유지되지 않는다고 말해야합니다. 마지막으로 .NET과 Mono 모두에서 매우 잘 작동했지만 자동으로 접힌 선을 취소 할 때 약간의 버그가있었습니다.

관련 문제