我需要将多个参数传递给我的conole应用程序:
1个项目名称
2版本名称
3部署环境名称
4一些布尔
5整数数组
据我所知,我需要运行以下代码:
string myParams = "Test proj name " + "3.22.652.965863 " + "QA " + "true " + "463841";
//string cParams = "true ";
var proc = System.Diagnostics.Process.Start(@"c:\\ MyFolder\bin\Debug\MyApp.exe", myParams);
而MyExe.exe
入口点具有以下代码:
static void Main(string[] args)
{
//Console.WriteLine(Convert.ToBoolean(args[0]));
string projectName = null;
string buildNumber = null;
string deploymentEnvironmentName = null;
bool shouldResolve = false;
List<int> ids = new List<int>();
if (args.Length >= 5)
{
for (int i = 0; i < args.Length; i++)
{
if (i == 0)
{
Console.WriteLine($"Arg: {i} is {args[i]}");
projectName = args[i];
}
if (i == 1)
{
Console.WriteLine($"Arg: {i} is {args[i]}");
buildNumber = args[i];
}
if (i == 2)
{
Console.WriteLine($"Arg: {i} is {args[i]}");
deploymentEnvironmentName = args[i];
}
if (i == 3)
{
Console.WriteLine($"Arg: {i} is {args[i]}");
Console.WriteLine($"Boolean convertion: {args[i]}");
shouldResolve = Convert.ToBoolean(args[i]);
}
if (i > 3)
{
ids.Add(Convert.ToInt32(args[i]));
}
}
MyService.MyMethod(ids, projectName, buildNumber, deploymentEnvironmentName, shouldResolve);
}
else
{
throw new Exception("You should define arguments only in following order: Project Name, Build Number, Deployment Environment Name and Array of your Change Sets");
}
Console.ReadLine();
}
我事先不知道我将要拥有多少个整数,但是我需要提前知道其他参数的顺序。但是,我的问题是该System.Diagnostics.Process.Start
方法通过空格分隔参数。这意味着我的第一个参数“ Test proj name”不会转换为一个参数,但是会被解析为“ Test”,“ proj”和“ name”。它弄乱了我的代码,我无法指望事先准备好参数。我该如何解决?也许我可以定义自己的分隔符,而忽略空白作为分隔符?我将不胜感激任何帮助或建议。
您应该可以通过将参数括在双引号中来解决此问题:
string myParams = "\"Test proj name\" " + "3.22.652.965863 " + "QA " + "true " + "463841";
从文档中:
包含空格的单个参数必须用引号引起来,但是这些引号不会传递到目标应用程序。
也就是说,您的应用程序将收到Test proj name
字符串,且字符串两端不带引号。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句