C# CLI 工具:从构思到成品,一晚搞定

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么 C# 是 CLI 工具的理想选择,以及这对 Python 开发者为何重要

\n

当我们谈论创建控制台工具时,首先想到的往往是 Python、Bash 或 Go。但如果我告诉你,C# 是编写快速、跨平台且美观的 CLI 工具 最被低估的语言之一呢?没错,就是那个许多人将其与 Web 表单和企业级庞然大物联系在一起的 C#。

\n

随着 .NET 6/8 的发布,C# 拥有了最小 API、原生编译(AOT)以及极其便捷的 System.CommandLine 库。现在,创建一个能在 Windows、Linux 和 macOS 上运行的工具,只需 15 分钟。对于学习 Python 的学生和开发者来说,这是扩展工具箱并了解其他语言中 CLI 工具工作原理的绝佳方式。

\n

在本文中,我们不仅仅是编写一个 "Hello World"。我们将创建一个功能完整的文件处理工具,它能够解析参数、输出彩色文本、处理错误,甚至显示进度条。开始吧!

\n\n

项目配置:最少的操作

\n

首先需要确保已安装 .NET SDK(版本 6.0 或更高)。检查方法很简单:

\n
dotnet --version
\n

如果一切正常,创建一个新的控制台项目:

\n
dotnet new console -n FileGuardian\ncd FileGuardian
\n

在这个阶段,我们已经得到了一个现成的框架。但对于一个真正的 CLI 工具,我们需要一个用于参数解析的库。添加它:

\n
dotnet add package System.CommandLine --version 2.0.0-beta4.22272.1
\n

完成。现在我们拥有了创建专业 C# 控制台应用程序 所需的一切。

\n\n

为什么选择 System.CommandLine 而不是手动解析?

\n

许多新手会写 args[0]、args[1],然后遭遇 IndexOutOfRangeException。这是一条痛苦之路。System.CommandLine 提供了:

\n
    \n
  • 自动解析标志(--output、-o)
  • \n
  • 输入错误时的提示
  • \n
  • 内置的 --help 生成
  • \n
  • 支持子命令(如 git 中的)
  • \n
\n

这是任何严肃的 C# 控制台工具 的必备功能。

\n\n

编写工具核心:第一个命令

\n

想象一下,我们正在创建一个文件监控工具——FileGuardian。它将检查文件大小,并在文件超过限制时发出警告。听起来很实用,对吧?

\n

打开 Program.cs 并编写以下代码:

\n
using System.CommandLine;\n\nvar rootCommand = new RootCommand("FileGuardian — 文件监控工具");\n\nvar fileOption = new Option<FileInfo?>(\n    name: "--file",\n    description: "要分析的文件路径"\n);\nrootCommand.AddOption(fileOption);\n\nrootCommand.SetHandler((file) =>\n{\n    if (file is null || !file.Exists)\n    {\n        Console.Error.WriteLine("❌ 文件未找到!");\n        return;\n    }\n    \n    long sizeInBytes = file.Length;\n    double sizeInMb = sizeInBytes / (1024.0 * 1024.0);\n    \n    Console.WriteLine($"📄 文件: {file.Name}");\n    Console.WriteLine($"📏 大小: {sizeInMb:F2} MB");\n    \n    if (sizeInMb > 100)\n        Console.WriteLine("⚠️ 警告:文件超过 100 MB!");\n}, fileOption);\n\nawait rootCommand.InvokeAsync(args);
\n

运行:

\n
dotnet run -- --file somefile.txt
\n

已经可以工作了。但这只是开始。让我们添加一些亮点——彩色输出和进度条。

\n\n

美观输出:添加颜色和表情符号

\n

控制台不一定是黑白的。C# 可以轻松更改文本颜色。创建一个辅助类:

\n
public static class ConsoleHelper\n{\n    public static void WriteSuccess(string message)\n    {\n        Console.ForegroundColor = ConsoleColor.Green;\n        Console.WriteLine($"✅ {message}"                

博客

书籍推荐