使用terminal命令运行winform application,并将配置xml文件作为命令参数给出

时间:2017-07-04 07:42:28

标签: c# xml winforms command-line

批量测试需要使用存储在与.exe相同的目录中的.xml文件中的配置(比如MyAppConfig.xml)从终端调用现有的winforms应用程序(比如说MyApp.exe)。我应该对应用程序进行哪些更改,以便能够从终端呼叫start /realtime c:\MyApp.exe /config="MyAppConfig.xml"。是否有人能够指出我如何实现此功能的正确方向?帮助赞赏。

2 个答案:

答案 0 :(得分:2)

构建控制台或表单应用程序时,Main方法通常用作代码的入口点。它将一个字符串数组作为从CLI传递下来的参数。

public static void Main(string[] args)
{
   for(int i = 0; i < args.Length; i++)
   {
       Console.WriteLine("Argument #{0} = {1}", i, args[i]);
   }
}

因此运行program.exe FOO BAR会导致:

Argument #0 = FOO 
Argument #1 = BAR

您还可以使用program.exe config="MyAppConfig.xml"表示法使参数与顺序无关,但您必须自己进行一些解析。

答案 1 :(得分:2)

在您的应用程序的Program.cs文件中,您将找到应用程序入口点Main()方法。更改其签名并添加将保存参数的string数组。然后,检查参数并实现您的逻辑。

这样的事情:

static void Main(string[] startArgs)
{
    if (startArgs.Length == 0)
    {
        //show messagebox stating that there's no parameters or something else
    }
    else
    {
        var configArg = startArgs.FirstOrDefault(s => s.StartsWith("config"));
        if (configArg == null)
        {
            //config parameter is missing
        }
        else
        {
            string xml = configArg.Split('=')[1];
            //xml holds your path to your xml file. 
            //Now you can pass it to form, or load it here

            //XmlDocument doc = new XmlDocument();
            //doc.Load(xml);
            //etc...
        }

    }

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

如果您计划拥有多个命令行参数,则应该查找NET CLI库,该库是apache commons cli API的.net端口,用于解析命令行参数...