C# Nuget命令行解析器库1.9.74库退出,代码为0x01
我有一个C#命令行程序,它意外地以消息结尾:C# Nuget命令行解析器库1.9.74库退出,代码为0x01,c#,.net,debugging,command-line,C#,.net,Debugging,Command Line,我有一个C#命令行程序,它意外地以消息结尾:程序“[2072]csgrep.exe”已退出,代码为1(0x1) 简称代码如下: static void Main(string[] args) { try { var parser = new CommandLine.Parser(s => { s.CaseSensitive = true; }); // the application
程序“[2072]csgrep.exe”已退出,代码为1(0x1)
简称代码如下:
static void Main(string[] args)
{
try
{
var parser = new CommandLine.Parser(s =>
{
s.CaseSensitive = true;
});
// the application unexpectedly stops when calling this method.
var isValid = parser.ParseArgumentsStrict(args, options);
if (isValid)
{
... run my application here
}
else
{
Console.WriteLine("Input error.");
}
}
catch(Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
CommandLine.Parser
和parseArgumentsStrit
来自nuget包“命令行解析器库1.9.74”()
当我使用调试器“进入”时,应用程序停止在var isValid=parser.parseArgumentsStrit(args,options)代码>
我的问题是我真的不知道如何解决问题。我怎样才能找出问题出在哪里 可按如下方式更改代码,以避免代码1意外退出:
static void OnCommandLineParseFail()
{
Console.WriteLine("Command line parse failure");
Console.WriteLine("Help: " + parser.Settings.HelpWriter.ToString());
}
static void Main(string[] args)
{
try
{
StringWriter t = new StringWriter();
var parser = new CommandLine.Parser(s =>
{
s.CaseSensitive = true;
s.HelpWriter = t;
s.IgnoreUnknownArguments = false;
});
var isValid = parser.ParseArgumentsStrict(args, options, OnCommandLineParseFail);
if (isValid)
{
... run my application here
}
else
{
Console.WriteLine("Input error.");
}
}
catch(Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
从文档中,parseArgumentsStrit:成功或退出。所以你的答案是它失败了,所以它退出了。您传递的选项和参数是什么。你能分享一下这些价值观吗,否则就无法解释为什么grep会失败。拉斐隆:谢谢,这让我走上了正确的道路。我真傻!我从来没有想过要检查nuget包的源代码。从消息来源可以清楚地看出,如果没有OnFail
操作被传递到ParseArgumentsStrict
方法,那么它将立即退出。我通过向方法提供一个OnFail
参数来修复它,然后它按照预期的方式运行。loneshark99:这并不重要,无论我是在没有参数或任何参数的情况下调用它,它都会失败。与此同时,我认为var parser=new CommandLine.parser(s=>{s.CaseSensitive=true;});
可能是造成问题的原因。使用库提供的默认静态解析器(var parser=CommandLine.parser.default;
)可以很好地工作,尽管它不区分大小写,这不是我想要的。