过程参数中的空格
Whitespaces at the Process Arguments
我正在尝试使用 Visual Studio 2015,VSIX 项目创建一个 Visual Studio 加载项。该加载项应该能够 运行 一个 .exe 文件以及当前项目路径。目前我可以找到项目的路径并将其作为进程(.exe 文件)的参数。
.exe文件被cmd 运行 如下:
the.exe -d projectDirectoryPath
检测项目路径不是我的问题,但是,如果路径包含 Space Character ,则将其理解为一个单独的参数。
以下代码是我用来启动该过程的代码:
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;
当当前项目的路径不包含Space字符时,代码可以正常运行,否则无法启动进程。该过程出现以下错误:
Given args:-d C:\Users\theUser\Documents\Visual Studio 2015\Projects\testProject\testProject
Too many arguments specified in your command line! Skipping extra argument: Studio
Too many arguments specified in your command line! Skipping extra argument: 2015\Projects\testProject\testProject
注意: 当我尝试从 cmd 运行 the.exe 时,它在项目路径中接受 space 个字符。
我该如何解决这个问题?
谢谢!
尽量使用"字符。您可以通过以下形式指定路径:
"C:\Users\foo\My Documents\file name.sln",例如。
您可以用 " 字符包围任何路径,例如在批处理或 Powershell 脚本中。
startInfo.Arguments = string.Concat("-d", "\"", myDir, "\"");
我正在尝试使用 Visual Studio 2015,VSIX 项目创建一个 Visual Studio 加载项。该加载项应该能够 运行 一个 .exe 文件以及当前项目路径。目前我可以找到项目的路径并将其作为进程(.exe 文件)的参数。 .exe文件被cmd 运行 如下:
the.exe -d projectDirectoryPath
检测项目路径不是我的问题,但是,如果路径包含 Space Character ,则将其理解为一个单独的参数。 以下代码是我用来启动该过程的代码:
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;
当当前项目的路径不包含Space字符时,代码可以正常运行,否则无法启动进程。该过程出现以下错误:
Given args:-d C:\Users\theUser\Documents\Visual Studio 2015\Projects\testProject\testProject
Too many arguments specified in your command line! Skipping extra argument: Studio
Too many arguments specified in your command line! Skipping extra argument: 2015\Projects\testProject\testProject
注意: 当我尝试从 cmd 运行 the.exe 时,它在项目路径中接受 space 个字符。
我该如何解决这个问题?
谢谢!
尽量使用"字符。您可以通过以下形式指定路径: "C:\Users\foo\My Documents\file name.sln",例如。 您可以用 " 字符包围任何路径,例如在批处理或 Powershell 脚本中。
startInfo.Arguments = string.Concat("-d", "\"", myDir, "\"");