如何在.NET Core控制台应用中调用自定义Nuget包的Version属性展示应用版本
.NET Core 自定义命令行解析器版本参数实现方案
实现步骤
- 首先引入Nuget包对应命名空间
using myspace.commandlineparser.commands; using System.Reflection;
- 实现
MyInterface1接口,版本属性直接读取当前控制台程序的程序集版本,避免硬编码维护
public class VersionCommand : MyInterface1 { // 实现接口版本属性,取当前运行程序的版本 public Version Version => Assembly.GetExecutingAssembly().GetName().Version; // 实现接口其余必填属性,数值可根据业务自定义 public int Id => 1; public string Name => "version"; }
注:你提供的接口示例中
int Id get; }存在语法笔误,实际以Nuget包中编译后的正式接口定义为准即可
- 绑定命令参数到触发逻辑,在
Program.cs的主逻辑中添加参数映射代码
// 此处解析器类名以你朋友开发的Nuget包实际暴露的类名为准 var commandParser = new MyCommandLineParser(); // 绑定短参数-v、长参数--version到版本输出逻辑 commandParser.MapOption<VersionCommand>("-v", "--version", commandInstance => { Console.WriteLine($"当前应用版本:{commandInstance.Version.ToString()}"); // 输出后直接退出,避免执行后续业务逻辑 Environment.Exit(0); }); // 执行命令行参数解析 commandParser.Parse(args);
特殊场景适配
如果你的需求是输出命令行解析器包本身的版本,而非当前开发的控制台程序版本,不需要自己实现MyInterface1接口,直接从解析器实例中获取内置的MyInterface1实现,读取其Version属性输出即可。
如果朋友开发的解析器依赖依赖注入容器,提前将VersionCommand以MyInterface1服务类型注册为单例,解析时直接从容器拉取实例读取版本属性即可。
内容的提问来源于stack exchange,提问作者Rohan Sharma
相关产品推荐
相关产品推荐

