2010-04-30 51 views
0

我想开发一个命令行工具。我之前没有创建一个,但我使用了一些,(如mercurial)。我需要采取哪些步骤来了解如何做到这一点?那么是什么问题:在使用C#构建命令行应用程序之前,我应该采取哪些步骤?

  1. 定期控制台应用程序需要从命令行只从它的目录中调用。像:C:\Projects\CommanLineProject\MyProjectConsole.exe。我想从任何目录的命令行使用它,如mercurial

  2. 我不知道如何解析和如何使用命令行参数。有些程序采用了这个参数:c:\>MyProject "c:\point to this path" /xml:"here is the another path" /r

+4

我看不出这个问题会从不同的只是“做什么步骤我需要开始一个新的前项目”。在这方面,编写规范似乎是一个好的开始。 – 2010-04-30 20:49:51

+0

我的意思是,我知道如何编写控制台应用程序,但我不确定如何构建命令行应用程序。 – 2010-04-30 20:51:12

+0

你似乎认为两者不同?请详细说明。 – 2010-04-30 20:52:54

回答

2

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

+0

我建议改变void返回一个int的Main方法。借此,您(或其他人)可以使用您退出的返回值。 – ChronoPositron 2010-04-30 20:51:38

1

有一件事你需要做的,如果应用程序是采取任何但最基本的参数,是选择的CMD线解析库,因为没有一个框架提供。

2

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

+0

感谢您的链接,这将有所帮助。 – 2010-04-30 21:05:58

1

对于问题/编辑#1:

如果您添加到您的操作系统的“路径”环境变量中可执行文件的路径,你可以运行在任何目录应用程序。有关将其设置为Windows XP的更多信息。

另外,您可能需要在应用程序启动时检索当前工作目录。我相信你可以使用​​来获得这个。我建议保存它,以防需要做一些可能会改变当前目录的过程。

对于问题/编辑#2:

您可以使用类似this解析被传递到通过args字符串数组应用程序的实际参数。然而,在这之后你对这些论点所做的完全取决于你。如果你愿意的话,没有什么能够阻止你通过数组并手动处理参数(foreach (string arg in args) {...})。

如果你想第一个命令行参数的文件路径写入,就这样吧。如果你想有一个像/verbose这样的可选参数,那么也可以。你真的只限于你的想象力(以及哪些可以在命令行:)上输入合法的限制)

相关问题