C# 在使用C构建命令行应用程序之前,我应该采取哪些步骤

C# 在使用C构建命令行应用程序之前,我应该采取哪些步骤,c#,command-line,C#,Command Line,我想开发一个命令行工具。我以前没造过,但我用过一些,比如mercurial。我需要采取什么步骤才能知道如何做到这一点?那么问题是什么: 常规控制台应用程序只需要从其目录从命令行调用。例如:C:\Projects\CommanLineProject\MyProjectConsole.exe。我想从任何目录的命令行使用它,比如mercurial 我不知道如何解析以及如何使用命令行参数。有些程序采用以下参数:c:\>MyProject c:\指向此路径/xml:这是另一个路径/r 命令行工具只是一个常

我想开发一个命令行工具。我以前没造过,但我用过一些,比如mercurial。我需要采取什么步骤才能知道如何做到这一点?那么问题是什么:

常规控制台应用程序只需要从其目录从命令行调用。例如:C:\Projects\CommanLineProject\MyProjectConsole.exe。我想从任何目录的命令行使用它,比如mercurial

我不知道如何解析以及如何使用命令行参数。有些程序采用以下参数:c:\>MyProject c:\指向此路径/xml:这是另一个路径/r


命令行工具只是一个常规的控制台应用程序。您可以使用Main方法中的string[]args参数来检索传递给应用程序的任何参数。

如果应用程序只接受最基本的参数,您需要做的一件事是选择cmd行解析库,因为框架没有提供该库

在创建一个重要的命令行应用程序之前,我将查看以下链接

我会去看看堆栈溢出问题,因为它在答案中有一些好的命令行解析库的链接。

对于问题/编辑1:

如果将可执行文件的路径添加到操作系统的“path”环境变量中,则可以从任何目录运行应用程序。有关设置的详细信息

此外,您可能需要在应用程序启动时检索当前工作目录。我相信你可以用这个。我建议保存它,以防您需要执行某些操作,可能会更改进程的当前目录

关于问题/编辑2:

您可以使用类似的方法来解析通过args字符串数组传递到应用程序中的实际参数。然而,在这一点之后,如何处理参数完全取决于您。如果愿意的话,没有什么可以阻止您只是遍历数组并手动处理args{…}中每个字符串arg的参数


如果要使第一个命令行参数成为要写入的文件的路径,那么就这样做吧。如果您想要一个可选参数,比如/verbose,那么它也可以。实际上,您仅限于自己的想象力和在命令行上合法键入的内容的限制:

我看不出这个问题与我在开始新项目之前所采取的步骤有什么不同。在这方面,编写规范似乎是一个好的开始。我的意思是,我知道如何编写控制台应用程序,但我不确定如何构建命令行应用程序。你似乎认为这两者是不同的?请详细说明。请注意,任何类型的应用程序,无论是服务、winforms应用程序还是控制台应用程序,都可以使用命令行参数。因此,命令行应用程序这个术语相当混乱。我正在寻找的是构建像mercurial应用程序一样响应的命令行工具,例如svn、imagemagick等。我建议更改void Main方法以返回int。有了这个,您或其他人可以使用退出时的返回值。感谢链接,这将有所帮助。