过程争论中的空白

时间:2016-07-18 08:31:12

标签: c# windows visual-studio command-line-arguments whitespace

我正在尝试使用Visual Studio 2015,VSIX项目创建Visual Studio加载项。该加载项应该能够与当前项目路径一起运行.exe文件。目前我可以找到项目的路径并将其作为Process的参数(.exe文件)。 .exe文件由cmd运行,如下所示:

    the.exe -d projectDirectoryPath

检测项目路径不是我的问题,但是,如果路径包含空格字符,则将其理解为单独的参数。 以下代码是我用于启动过程的代码:

string myDir = activeProjectPath();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.FileName = pathOfExe + "\\the.exe";
startInfo.Arguments = "-d " + myDir;

当前项目的路径不包含空格字符时,代码正常工作,否则进程无法启动。该过程给出以下错误:

  

给定args:-d C:\ Users \ theUser \ Documents \ Visual Studio 2015 \ Projects \ testProject \ testProject

     

命令行中指定的参数太多!跳过额外参数:Studio

     

命令行中指定的参数太多!跳过额外参数:2015 \ Projects \ testProject \ testProject

注意:当我尝试从cmd运行该命令时,它接受项目路径中的空格字符。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用“字符。您可以使用以下格式指定路径: 例如,“C:\ Users \ foo \ My Documents \ file name.sln”。 您可以使用“字符包围任何路径,例如批处理或Powershell脚本。

startInfo.Arguments = string.Concat(“ - d”,“\”“,myDir,”\“”);