2014-03-03 50 views
2

我正在使用NuGet命令行解析器庫。我希望能夠設置一些命令行工具,並且我想要命令(-v或--version)返回當前版本的應用程序。我有另一種方法來查找版本並將其設置爲一個字符串,所以我現在需要的是將命令行參數設置爲當前版本,而不是僅僅期望在命令之後。謝謝您的幫助!命令行解析器庫.NET能夠檢索版本號

static string GetVersion() { 
    Assembly assembly = Assembly.GetExecutingAssembly(); 
    FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); 
    string currentVersion = fvi.FileVersion; 
    return currentVersion; 
} 

class Options 
{ 
    [Option('v', "version", HelpText = "Sets version to be run")] 
    public string Version { get; set; } 
} 

這只是重要的部分。

+0

您是否閱讀過文檔和示例?你到目前爲止有什麼,你卡在哪裏? –

+0

發佈您迄今爲止編寫的代碼。 –

+0

@DStanley到目前爲止我已閱讀文檔,但不清楚如何在庫中調用這樣的「選項」。到目前爲止,我已經設置了獲取和設置輸入/輸出文件名的選項,並且還包含了一個自動幫助功能。我被困在如何從一個getter setter選項中調用一個方法。 – hasti123

回答

3

基於它看起來像你想是這樣的documentation

// Define a class to receive parsed values 
class Options { 

    [Option('v', "version", 
    HelpText = "Prints version information to standard output.")] 
    public bool Version { get; set; } 

    [ParserState] 
    public IParserState LastParserState { get; set; } 

    [HelpOption] 
    public string GetUsage() { 
    return HelpText.AutoBuild(this, 
     (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current)); 
    } 
} 

// Consume them 
static void Main(string[] args) { 
    var options = new Options(); 
    if (CommandLine.Parser.Default.ParseArguments(args, options)) { 
    // Values are available here 
    if (options.Version) Console.WriteLine("Version: {0}", GetVersion()); 
    } 
} 

你不需要Version屬性來獲取版本 - 你可以把它作爲一個「開關」,告訴程序來顯示版本。如果你想讓用戶設置版本,那麼get/set字符串屬性會更合適。

+0

這是有道理的!非常感謝你現在正在工作。 – hasti123