C# 使用ProcessStartInfo发出执行链接命令
我有以下用于执行命令行进程的代码:C# 使用ProcessStartInfo发出执行链接命令,c#,cmd,process,msbuild,C#,Cmd,Process,Msbuild,我有以下用于执行命令行进程的代码: public ProcessResult ExecuteCommand(string command, string startdir, string arguments = "") { ProcessResult result = new ProcessResult(); var processInfo = new ProcessStartInfo { Arguments = arguments,
public ProcessResult ExecuteCommand(string command, string startdir, string arguments = "")
{
ProcessResult result = new ProcessResult();
var processInfo = new ProcessStartInfo
{
Arguments = arguments,
CreateNoWindow = false,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
WorkingDirectory = startdir,
Verb = "runas",
FileName = command
};
// Redirect the output
using (Process process = Process.Start(processInfo))
{
process.OutputDataReceived += (object sender, DataReceivedEventArgs e) =>
{
result.StandardOutput.Add(e.Data);
Console.WriteLine(e.Data);
};
process.BeginOutputReadLine();
process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) =>
{
result.StandardError.Add(e.Data);
Console.WriteLine(e.Data);
};
process.BeginErrorReadLine();
process.WaitForExit();
result.ExitCode = process.ExitCode;
}
return result;
}
我试图启动开发人员命令提示符并执行msbuild命令,但遇到了一些问题。在命令行上,这可以正常工作:
“C:\Program Files(x86)\Microsoft Visual
Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat“&msbuild
C:\Users\Documents\Development\Automation.AutoIVU\AutoIVU\AutoIVU\AutoIVU.csproj
/p:ConfigurationPtforms=Release/p:Platform=“X64”
但当我在代码中执行相同的操作时,它会失败:
string vsBuildConsole = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat";
string autoIVUProjPath = "C:\\Users\\Documents\\Development\\Automation.AutoIVU\\AutoIVU\\AutoIVU\\AutoIVU.csproj";
string msBuildCommand = $"msbuild \"{autoIVUProjPath}\" /t:Build /p:ConfigurationPlatforms=Release /p:Platform = \"X64\"";
ProcessResult result = this.ExecuteCommand("C:\\Windows\\System32\\cmd.exe", ".", $"/C \"{vsBuildConsole}\" & {msBuildCommand}");
命令:
C:\Windows\System32\cmd.exe
论据:
/C“C:\ProgramFiles(x86)\Microsoft Visual
Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat“&msbuild
“C:\Users\Documents\Development\Automation.AutoIVU\AutoIVU\AutoIVU\AutoIVU.csproj”
/t:Build/p:ConfigurationPlatforms=Release/p:Platform=“X64”
输出:
“'C:\\Program'未被识别为内部或外部命令、可操作程序或批处理文件。”
看起来您实际上并没有像您认为的那样将路径括在引号中。查看分配参数的代码将很有帮助。感谢您的回复,我已经更新了@itsme86的更多信息