所以我在过去编写过工具,将命令行参数传递给winforms c#工具。我如何传递可选的特定参数。
Static void test(string name="bill", int age=5, string location = "home")
{
Console.writeline (name)
Console.writeline (age)
}
简单来说,我希望用户能够通过年龄或名称或两者来调用此功能命令行。 示例...
测试名称:“JOEY” 测试地点:“床”年龄:5
也许建议我编写命令行参数的方式,我以可以传递可选参数的方式解析。建议欢迎。
答案 0 :(得分:2)
据我了解和devdigital建议,您可以使用Command Line Parser Library(使用NuGet提供)。 我在我的项目中使用它以便在不同的状态下启动应用程序。 首先,您将定义所有可接受的参数(可以将其中一些设置为可选,有关库文档的更多信息)
public class CommandLineArgs
{
[Option('t', "type", Required = false, HelpText = "Type of the application [safedispatch, safenet]")]
public string AppType { get; set; }
[Option('c', null, HelpText = "Enable the console for this application")]
public bool Console { get; set; }
[Option('l', null, HelpText = "Enable the logs for this application")]
public bool Log { get; set; }
[Option('h', null, HelpText = "Help for this command line")]
public bool Help { get; set; }
[HelpOption]
public string GetUsage()
{
// this without using CommandLine.Text
// or using HelpText.AutoBuild
var usage = HelpText.AutoBuild(this);
return usage.ToString();
}
}
接下来,在Program.cs
类上,在main函数内部,您将创建一个CommandLineArgs
对象并解析接收到的参数。最后,您将根据传递给您的参数做出决定。
static void Main(string[] args)
{
var cmdArgs = new CommandLineArgs();
if (args.Length > 0 && CommandLine.Parser.Default.ParseArguments(args, cmdArgs))
{
// display the help
if (cmdArgs.Help)
{
Utils.WriteLine(cmdArgs.GetUsage());
Console.ReadKey();
}
// display the console
if (!cmdArgs.Console)
{
// hide the console window
setConsoleWindowVisibility(false, Console.Title);
}
// verify other console parameters and run your test function
}
else if (args.Length == 0)
{
// no command line args specified
}
// other lines ...
}
希望这有帮助。
答案 1 :(得分:1)
一个建议是使用命令行解析库,例如Command Line Parser Library或Fluent Command Line Parser,两者都可以通过NuGet获得。