【问题标题】:Converting a C# (Windows application) into commandline application?将 C#(Windows 应用程序)转换为命令行应用程序?
【发布时间】:2011-09-23 03:46:40
【问题描述】:

我希望将 C#(Windows 平台应用程序)转换为命令行版本。

场景是:我在 VS 2010 中实现了一个 C#(Windows 应用程序)。这个应用程序的输出是生成一个 txt(日志)文件(简单解释)。

现在的情况是,通过在运行时从命令行调用我的 C# 应用程序,还有另一个应用程序需要使用我的这个 C# 应用程序。

我的问题是,如何将已经存在的 C# 应用程序转换为命令行应用程序,以便可以从调用(其他)程序调用此 C# 应用程序?有一个输入参数需要在命令行上传递给我的 C# 应用程序。然后这个 C# 应用程序将根据输入参数处理数据,然后生成输出 log(txt) 文件。

补充说明

我对这里的解决方案印象深刻。读者需要更多的专业知识。我希望一个应用程序既可以用作命令行应用程序,也可以用作 Windows 应用程序(之前忘记提及,抱歉!),具体取决于传递给应用程序的输入参数的数量。从这个角度来看,我有两个选择来实现它,

1) 为两个应用程序(命令行和窗口窗体)创建单独的函数。根据输入参数传递调用它们。在每个函数中实现每个应用程序的完整功能,而不会干扰(或进入其他应用程序的代码)。此外,经过一些编辑,我将能够重新使用 2 个主要功能,这些功能已经内置在 windows 窗体应用程序中。

缺点:这将使代码大小比案例 2 增加近 50%。

2) 第二个想法与此处一位专家的描述相同,即在命令行中使用与已构建的 windows 窗体应用程序相同的应用程序/功能。区分的唯一方法是查看输入参数传递,并据此决定是显示 GUI 界面还是仅使用命令行输入(并进行处理)。

缺点:由于额外添加了对输入参数决策数量的检查,这种情况会使代码有点混乱,难以维护/实现。

我应该遵循哪种策略来实施?

【问题讨论】:

标签: c# visual-studio-2010 command-line


【解决方案1】:

当然 - 只是:

  1. 新建一个VS2010命令行项目

  2. 您现在将拥有一个“main ()”(或者,在 MS-Land 中为“_tmain()”)函数,而不是根类。

  3. 将相关代码剪切并粘贴到“main()”中(或到 main() 调用的函数中,或从 main() 创建的类中 - 您可以选择)。

  4. 执行搜索和销毁任务,找到您进行 GUI 输入的任何地方,并替换为命令行参数。

  5. 解析你的命令行。

瞧!完成!

【讨论】:

    【解决方案2】:

    您不必转换它。您的应用程序可以保留为 Windows 应用程序。您只需要处理命令行参数。

    要从应用程序的任何地方获取命令行参数,只需使用Environment.GetCommandLineArgs();

    【讨论】:

      【解决方案3】:

      您想从命令行获取价值并不是将 winform 应用程序转换为控制台应用程序的好理由。你可以使用,

      string[] args = Environment.GetCommandLineArgs();

      但是,您可以通过打开project properties(右键单击项目名称)更改应用程序类型并更改Output type

      【讨论】:

        【解决方案4】:

        如果你传入了参数,就不要显示 GUI,就像从其他程序调用时一样。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-22
          • 2015-02-12
          • 2022-09-24
          • 2019-07-14
          相关资源
          最近更新 更多