我希望将C#(Windows平台应用程序)转换为命令行版本。
场景是:我在VS 2010中实现了一个C#(Windows应用程序)。此应用程序的输出是生成一个txt(日志)文件(简单说明)。
现在的情况是,还有一个应用程序需要使用我的这个C#应用程序,通过在运行时从命令行调用我的C#应用程序。
我的问题是,如何将现有的C#应用程序转换为命令行应用程序,以便可以从调用(其他)程序调用此C#应用程序?有一个输入参数需要在命令行上传递给我的C#应用程序。然后这个C#应用程序将根据输入参数处理数据,然后生成输出log(txt)文件。
我对这里的解决方案印象非常深刻。读者需要更多的专业知识。我希望一个应用程序只能作为命令行应用程序和Windows应用程序工作(之前别忘了,抱歉!),具体取决于传递给应用程序的输入参数的数量。从这个角度来看,我有两个选项来实现它,
1)为两个应用程序(命令行和窗口表单)创建单独的函数。根据输入参数传递调用它们。在每个函数中实现每个应用程序的完整功能,而不会打扰(或进入其他应用程序的代码)。此外,我将能够在一些编辑后重新使用已在windows-form应用程序中构建的2个主要功能到我的命令行应用程序中。
缺点:这将使代码大小比情况2多近50%。
2)第二个想法与此处的专家之一描述的相同,即使用与已构建的窗体应用程序相同的命令行应用程序/功能。区分的唯一方法是查看输入参数pass,并相应地决定是显示GUI界面还是仅使用命令行输入(并进行处理)。
缺点:由于额外添加了对输入参数决策数量的检查,这种情况会使代码位杂乱且难以维护/实现。
我应该遵循哪种策略来实施?
答案 0 :(得分:2)
当然 - 只是:
创建新的VS2010命令行项目
您现在将拥有一个“main()”(或者,在MS-Land中,“_ tmain()”)函数而不是根类。
将相关代码剪切并粘贴到“main()”(或者由main()调用的函数中,或者粘贴到从main()创建的类中 - 您的选择)。
执行搜索和销毁任务,找到您正在进行GUI输入的任何位置,并替换命令行参数。
解析命令行。
瞧!完成!
答案 1 :(得分:2)
您希望从命令行获取价值并不是将winform应用转换为控制台应用的好理由。你可以使用,
string[] args = Environment.GetCommandLineArgs();
但是,您可以通过打开project properties
(右键单击项目名称)更改应用程序类型并更改Output type
。
答案 2 :(得分:2)
您无需转换它。您的应用程序可以作为Windows应用程序保留。您只需处理命令行参数。
要从应用程序中的ANYWHERE获取命令行参数,只需使用Environment.GetCommandLineArgs();
答案 3 :(得分:1)
如果传入参数,就不要显示GUI,就像从其他程序调用时一样。