C# Cocona
最后修改时间:2024 年 1 月 18 日
在本文中,我们将使用 Cocona 库在 C# 中创建简单的控制台应用程序。
Cocona 是一个库,它可以轻松快速地在 .NET 上构建控制台应用程序。 该库模仿 ASP.NET Core Minimal API。 它具有类似于标准 Unix 工具的语义。
该库有两个版本:Cocona 和 Cocona.Light。 Light 版本具有更少的开销和功能。 它没有日志记录、DI 和配置。
C# Cocona 简单示例
我们有一个非常简单的控制台应用程序。
using Cocona; CoconaLiteApp.Run((string name) => { Console.WriteLine($"Hello {name}"); });
如果我们的应用程序只有一个命令,我们可以直接使用 CoconaLiteApp.Run
方法。 Cocona 从方法参数(name
)创建一个命令行选项。
$ dotnet run --name Peter Hello Peter
我们将一个值传递给 --name
选项。 程序用问候消息响应。
$ dotnet run -- --help Usage: FirstEx [--name <String>] [--help] [--version] FirstEx Options: --name <String> (Required) -h, --help Show help message --version Show version
Cocona 自动创建应用程序帮助。 由于 dotnet
命令也具有 --help
选项,因此我们必须在我们的选项前加上 --
。
前面的代码是以下代码的缩短版本
using Cocona; var builder = CoconaLiteApp.CreateBuilder(); var app = builder.Build(); app.AddCommand((string name) => { Console.WriteLine($"Hello {name}"); }); app.Run();
在此代码示例中,我们使用构建器构建 Cocona 应用程序,并使用 AddCommand
添加新命令。
app.Run();
Run
方法启动启用 Cocona 的应用程序。
基于类的示例
在基于类的应用程序中,公共方法会自动转换为命令。
using Cocona; class Program { static void Main(string[] args) { CoconaLiteApp.Run<Program>(args); } public void Message(string name, int age) { Console.WriteLine($"{name} is {age} years old"); } }
该程序接受两个选项:--name
和 --age
。
$ dotnet run --name John --age 34 John is 34 years old
多个命名命令
我们可以添加多个命名命令。
using Cocona; var app = CoconaLiteApp.Create(); app.AddCommand("add", () => { Console.WriteLine("add command"); }); app.AddCommand("remove", () => { Console.WriteLine("remove command");}); app.AddCommand("show", () => { Console.WriteLine("show command"); }); app.Run();
该示例添加了三个命名命令。
app.AddCommand("add", () => { Console.WriteLine("add command"); });
第一个参数是命令的名称。 第二个参数是指向命令主体的委托。
标志
可以使用 Option
属性添加标志。
using Cocona; var app = CoconaLiteApp.Create(); app.AddCommand(([Option('f')] bool force, [Option('r')] bool recursive) => { Console.WriteLine(force); Console.WriteLine(recursive); }); app.Run();
该示例添加了两个标志:-f
和 -r
。
$ dotnet run -- -f -r True True $ dotnet run -- -fr True True
我们可以使用 -f -r
和 -fr
这两种变体。
一个值的数组
可以将值的数组插入到数组中。 此选项在 light Cocona 应用程序中不受支持。
using Cocona; var app = CoconaApp.CreateBuilder().Build(); app.AddCommand(([Option('N')]string[] names) => { foreach (var name in names) { Console.WriteLine(name); } }); app.Run();
该程序接受 -N
选项的一个或多个值。
app.AddCommand(([Option('N')]string[] names) =>
字符串数组使用 [Option('N')]
属性进行修饰。
$ dotnet run -NPaul -NJane -NJohn -NLucy Paul Jane John Lucy
来源
在本文中,我们已经使用 Cocona 在 C# 中创建了简单的控制台应用程序。
作者
列出所有 C# 教程。