You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改CommandlineParser的--version输出为程序集文件版本

让CommandLineParser的--version输出程序集文件版本的简便方法

默认情况下,CommandLineParser组件的--version开关会输出程序集的产品版本(对应AssemblyInformationalVersionAttribute),要改为输出文件版本(对应AssemblyFileVersionAttribute),有两种官方支持的简便方案:

方案一:直接指定版本字符串

在参数解析时,通过WithVersion方法直接传入获取到的文件版本:

using CommandLine;
using System.Reflection;

class Program
{
    static void Main(string[] args)
    {
        // 获取当前程序集的文件版本
        var fileVersion = Assembly.GetEntryAssembly()
            ?.GetCustomAttribute<AssemblyFileVersionAttribute>()
            ?.Version ?? "Unknown Version";

        Parser.Default.ParseArguments<Options>(args)
            .WithVersion(fileVersion) // 替换默认版本输出内容
            .WithParsed(Run);
    }

    private static void Run(Options opts)
    {
        // 执行业务逻辑
    }
}

public class Options
{
    // 自定义你的命令行选项
}

方案二:自定义版本提供者(复用场景)

如果需要在多个解析逻辑中复用该规则,可以实现IVersionProvider接口:

using CommandLine;
using System.Reflection;

public class FileVersionProvider : IVersionProvider
{
    public string GetVersion()
    {
        return Assembly.GetEntryAssembly()
            ?.GetCustomAttribute<AssemblyFileVersionAttribute>()
            ?.Version ?? "Unknown Version";
    }
}

然后在解析时指定版本提供者:

Parser.Default.ParseArguments<Options>(args)
    .WithVersionProvider(new FileVersionProvider())
    .WithParsed(Run);

这两种方案都无需修改组件源码,直接通过官方扩展方法实现需求,执行--version开关时就会输出程序集的文件版本。

内容的提问来源于stack exchange,提问作者endurium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:02:07