出于学习目的,我正在用c#和winforms开发一个类生成应用程序.我认为包含允许在脚本中使用应用程序的命令行模式可能没什么问题.
在我的应用程序中包含命令行模式是一个好习惯吗?最好有两个不同的程序,一个是GUI,一个用于命令行?
实际上有一个C#应用程序同时是控制台和GUI是有问题的.启动控制台应用程序(/ t:exe),然后命令提示符等待它们完成.GUI应用程序(/ t:winexe)命令shell启动它们然后立即返回.虽然您可以从"控制台"应用程序创建和运行表单,但它始终会显示一个后台控制台.另一方面,'Forms'应用程序没有连接stdin,stdout和stderr,虽然它们可以作为命令行工具和进程命令参数,但它们在嵌入脚本时会出现问题(因为标准输入/输出不是迷上了).
如果您希望从GUI驱动的应用程序和可编写脚本/可管理的批处理中公开功能,最好的方法是将您的功能编译到类库中,然后构建两个利用该库的独立应用程序(一个GUI一个控制台).
我不是C#程序员,但是当我使用C++编程时,我发现它对以下内容最有用:
1.)创建一个带有C的共享库以及用于执行核心应用程序功能的C++ API.
2.)创建shell解释器可访问的一个或多个命令行二进制文件.
3.)为典型的最终用户创建GUI应用程序,使用库实现(而不是通过调用二进制文件).
这将应用程序的逻辑从接口分离到应用程序,并使第三方开发人员能够为相同的应用程序功能创建备用接口.它还使脚本易于编写,同时满足那些想要一个漂亮,闪亮的GUI的典型最终用户.