업데이트 : 설정 값에서 콜론을 처리하도록 업데이트되었습니다.
OK, 그래서 여기에 당신은 Setting=C:\Path
3 개 값 (설정, C, \ 경로로 구문 분석하는 의미, 다중 매개 변수를 모두 :
및 =
이 값 구분자로 간주된다는 점이다 NDesk.Options의 암시 적 기본값 중 하나에 실행) 예상되는 2 대신. 이 문제를 해결하기 위해
, 당신은 단순히 대신 "s="
의 "s={=}"
를 작성하여 만 유효한 구분자로 =
을 고려해야 할 -s
옵션 정의를 수정해야합니다.
원본 대답, 백 슬래시와 관련된 내용입니다.
따옴표로 묶인 경로 및 백 슬래시에 문제가 발생하지 않고 NDesk.Options을 사용했습니다. 여기
내 샘플 프로그램입니다 :
public static void Main(string[] args)
{
string parsedPath = null;
Dictionary<string, string> parsedValues = new Dictionary<string, string>();
var set = new OptionSet()
{
{ "p=", "the project path", v => parsedPath = v },
{ "s=", "a setting", (m, v) => { parsedValues.Add(m, v); } },
};
set.Parse(args);
Console.WriteLine(parsedPath ?? "<NULL>");
foreach (var keyValuePair in parsedValues)
{
Console.WriteLine(keyValuePair.Key + "::::" + keyValuePair.Value);
}
}
당신은 당신의 정의와 내 사이에 차이가 있음을 볼 수 있습니다 : p=
이 옵션은 필요한 값을 가지고 있다는 것을 의미 당신의 정의는 p
부울 것을 의미하지만, 플래그 값.
p 설정 또는 s 설정에서 백 슬래시와 관련하여 문제가 발생하지 않았습니다. 버전 0.2.1의 NDesk.Options으로 프로그램을 실행하고 어떤 값이 실패했는지 보여줄 수 있습니까?
-sGreeting=Hello\My World -- // This gives Greeting="Hello\My"
주 : 그 아무것도 변경하는 경우 여기에
-p=..\Path
-p..\Path
-pC:\Hello
-pHello\World
-p"Hello\World"
-s"Greeting=Hello\World"
-sGreeting="Hello\World"
-sGreeting=Hello\World
-sGreeting="Hello\My World"
-s"Greeting=Hello\My World"
는 언급 가치가 다른 결과를 생성 할 몇 가지 구문 분석이다 : 여기
모두 성공적으로 구문 분석 내가 달릴 몇 가지 샘플입니다 , NDesk.Options를 프로젝트의 Options.cs 소스 코드 파일로 실행했지만 컴파일 된 DLL로 실행하지 않았습니다.
예제 명령 줄에 실패 할 수 있습니까? 전체 인수 또는 파일 이름 부분 만 인용 했습니까? – CodesInChaos