2012-11-13 3 views
0

myExe.exe을 실행하면 아래의 기본 기능이 실행되지 않고 실행되지만 myExe.exe -launch을 실행하면 실행됩니다. 이 응용 프로그램이 기본적으로 실행되지 않는 이유에 대한 의견이 있으십니까? Documentation에 따르면이 문서에서콘솔 응용 프로그램에 매개 변수가없는 경우 기본 메서드가 실행되지 않음

발췌 작동합니다 :

As a fallback, a default handler may be registered which will handle all arguments which are not handled by any of the above matching algorithms. The default handler is designated by the name <> (which may be an alias for another named NDesk.Options.Option). 

내 코드 :

기본 핸들러는 특정를 제공하지 않았다되는 모든 인수를 처리하도록 설계
public static void Main (string[] args) 
{ 
    bool showHelp = false; 
    var options = new OptionSet() { 
     { 
      "h", "Show help", 
      v => showHelp = true 
     }, { 
      "config", "Reconfigure the launcher with different settings", 
      v => PromptConfig() 
     }, { 
      "v", "Show current version", 
      v => ShowVersion() 
     }, { 
      "launch", 
      v => LaunchApplication() 
     }, { 
      "<>", //default 
      v => LaunchApplication() 
     } 
    }; 

    //handle arguments 
    List<string> extra; 
    try { 
     extra = options.Parse (args); 
    } 
    catch (OptionException e) { 
     Console.Write("MyApp:"); 
     Console.WriteLine(e.Message); 
     Console.WriteLine("Try `MyApp--help' for more information"); 
     return; 
    } 

    if (showHelp) { 
     ShowHelp(options); 
     return; 
    } 
} 
+0

:

따라서, 예를 들어, 코드는 다음과 같다 수 있을까? 'options.Parse'의 세부 사항을 모른 채로 잘 작동하는 것처럼 보입니다. –

+0

'LaunchApplication()'은 매개 변수가 전달되지 않을 때 실행되지 않습니다. 잘 모르겠지만, NDesk.Options 시스템은 다음과 같습니다. http://www.ndesk.org/doc/ndesk-options/NDesk.Options/OptionSet.html – Webnet

답변

1

매니저.

처리 할 인수가 없기 때문에 MyExe.exe을 실행하면 기본 처리기가 호출되지 않아야합니다. 당신이 명령 줄을 실행하면 다음과 같은 MyExe.exe -someUnknownArgument다음 기본 핸들러에 걷어차합니다.

을 어쨌든, 나는 Parse 방법의 의도는 명령 줄을 구문 분석하고 인수를 나타냅니다 자신의 모델을 초기화하는 것입니다 생각 , 그리고 나서 그들에게 행동하십시오. * * 실행되지 무엇

public enum Action 
{ 
    ShowHelp, 
    ShowVersion, 
    PromptConfig, 
    LaunchApplication 
} 

public static void Main (string[] args) 
{ 
    var action = Action.LaunchApplication; 

    var options = new OptionSet() { 
     { 
      "h", "Show help", 
      v => action = Action.ShowHelp 
     }, 
     { 
      "config", "Reconfigure the launcher with different settings", 
      v => action = Action.PromptConfig 
     }, 
     { 
      "v", "Show current version", 
      v => action = Action.ShowVersion 
     }, 
     { 
      "launch", 
      v => action = Action.LaunchApplication 
     } 
    } 

    try 
    { 
     // parse arguments 
     var extra = options.Parse(args); 

     // act 
     switch (action) 
     { 
      // ... cases here to do the actual work ... 
     } 
    } 
    catch (OptionException e) 
    { 
     Console.WriteLine("MyApp: {0}", e.Message); 
     Console.WriteLine("Try `MyApp --help' for more information"); 
    } 
} 
관련 문제