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