如何使用System.CommandLine设置命令行应用版本号
为System.CommandLine命令行应用设置版本的两种方法
方法一:通过项目文件配置(推荐)
System.CommandLine的默认--version选项会自动读取程序集的版本信息,无需修改代码,只需在项目的.csproj文件中添加版本配置:
打开你的.csproj文件,在<PropertyGroup>节点中添加或修改以下属性:
<PropertyGroup> <!-- 产品版本(--version输出显示的版本号) --> <Version>2.1.0</Version> <!-- 可选:程序集版本 --> <AssemblyVersion>2.1.0.0</AssemblyVersion> <!-- 可选:文件版本 --> <FileVersion>2.1.0.0</FileVersion> </PropertyGroup>
配置完成后,运行应用时输入你的应用名 --version,就会显示你设置的版本号,替代默认的1.0.0。
方法二:在代码中手动指定版本
如果需要动态控制版本,可以通过代码直接设置:
方式1:设置RootCommand的Version属性
在创建RootCommand实例后,直接指定版本:
var rootCommand = new RootCommand("Converts HTMLs to PDFs provided the names of the files") { HTMLS_FOLDER_option, PDFS_FOLDER_option, names_option, threads_option }; // 自定义版本号 rootCommand.Version = new Version("2.1.0");
这种方式会让默认的--version选项自动使用你设置的版本。
方式2:自定义版本输出格式
如果需要完全自定义版本的显示内容,可以手动添加版本选项并处理输出:
// 添加自定义版本选项 var versionOption = new Option<bool>( new string[] { "-v", "--version" }, "显示应用版本信息"); rootCommand.Add(versionOption); // 更新命令处理器,加入版本选项的处理逻辑 rootCommand.SetHandler( (htmlFolder, pdfFolder, names, threads, showVersion) => { if (showVersion) { Console.WriteLine("HTML转PDF工具 v2.1.0"); return; } OnHandle(htmlFolder, pdfFolder, names, threads); }, HTMLS_FOLDER_option, PDFS_FOLDER_option, names_option, threads_option, versionOption);
注意:使用这种自定义方式时,建议移除.UseDefaults()调用,避免和默认生成的版本选项冲突。
内容的提问来源于stack exchange,提问作者futium
相关产品推荐
相关产品推荐

