使用带有自定义 Main() 签名的 System.CommandLine
Posted
技术标签:
【中文标题】使用带有自定义 Main() 签名的 System.CommandLine【英文标题】:Using System.CommandLine with custom Main() signature 【发布时间】:2021-12-01 09:07:45 【问题描述】:我正在尝试使用System.CommandLine
,并且我已经安装了 nuget 包:
Install-Package System.CommandLine -Version 2.0.0-beta1.21308.1
根据this Microsoft article,我应该能够用我的签名编写一个 Main() 方法,它应该会自动神奇地工作:
static void Main(FileInfo input, FileInfo output)
Console.WriteLine($"Hello World! input output");
但是我的 Main() 方法签名被拒绝,我得到CS5001: Program does not contain a static 'Main' method suitable for an entry point
。
我做错了吗?根据文章,System.CommandLine
应该是这样工作的。
【问题讨论】:
您使用的是什么版本的 C# 语言?您尝试使用的功能称为"Top level statements",是在 c# 9 中引入的。 我使用的是 .NET 5.0,根据***.com/questions/19532942/…,它决定了 C# 版本应该是 9.0 你关注the instructions for usingDragonFruit
了吗?
谢谢,我需要运行Install-Package System.CommandLine.DragonFruit -Version 0.3.0-alpha.21216.1
,现在它可以工作了。您能否将其添加为答案,以便我接受?
【参考方案1】:
确保以 .NET 5.0 为目标,并在包管理器控制台中运行以下 2 个命令:
Install-Package System.CommandLine -Version 2.0.0-beta1.21308.1
Install-Package System.CommandLine.DragonFruit -Version 0.3.0-alpha.21216.1
之后它应该可以工作了。
说明:为了使用System.CommandLine
,还需要安装一个名为DragonFruit
的NuGet包。
正是这个包启用了自定义命令行参数。
详情请看这里:https://github.com/dotnet/command-line-api/blob/main/docs/DragonFruit-overview.md
另外请注意,您还需要 C# 版本 9 或更高版本来支持 Top-Level Statements
,但您已确认您正在使用它 - 我在这里为其他读者提及它。
【讨论】:
以上是关于使用带有自定义 Main() 签名的 System.CommandLine的主要内容,如果未能解决你的问题,请参考以下文章
SSLHandshake 使用自签名根证书失败 (-9808)