c# - 命令行解析器库 .NET 能够检索版本号

标签 c# .net winforms command-line command-line-arguments

我正在使用 NuGet 命令行解析器库。我希望能够设置一些命令行工具,并且我希望命令(-v 或 --version)返回应用程序的当前版本。我设置了另一种方法来查找版本并将其设置为字符串,所以我现在需要的是将命令行参数设置为当前版本,而不是仅仅在命令后期待一些东西。谢谢您的帮助!

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; }
}

这只是重要的部分。

最佳答案

基于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 属性来获取版本 - 您可以将它用作“开关”来告诉程序显示版本。如果您希望用户设置版本,那么获取/设置字符串属性会更合适。

关于c# - 命令行解析器库 .NET 能够检索版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155383/

相关文章:

c# - SEHException 未处理

c# - 在远程计算机上创建和删除文件

.net - 我的服务以什么帐户运行?

c# - 如何从 SQL 数据库获取数据到组合框 - C#

c# - Convert.ToInt32 行为字符串与 float / double 文字

c# - Neo4j:合并复制查询中的三个节点之一

c# - 从 C# 调用 Matlab 编译函数时执行错误

c# - 如何将双 DateTimePicker 数据绑定(bind)到单个 DateTime 对象

c# - 如何禁用 TabControl 中的选项卡?

c# - 学习 WinForms 值得吗?它过时了吗?