2017-06-06 113 views
0

我想以编程方式运行visual studio命令。我尝试了上述代码,但没有任何帮助。我得到的是打开了我的项目目录的命令提示符。无法打开Visual Studio命令提示符实用地使用VS 2015

我已经使用Execute(“VS140COMNTOOLS”)作为输入。

private void Execute(string vsEnvVar) { 

     var vsInstallPath = Environment.GetEnvironmentVariable(vsEnvVar); 

     if (Directory.Exists(vsInstallPath)) { 
      var filePath = vsInstallPath + "vsvars32.bat"; 
      if (File.Exists(filePath)) { 
       //start vs command process 
       Process proc = new Process(); 

       var command = Environment.GetEnvironmentVariable("ComSpec"); 
       command = @"" + command + @""; 

       //var batfile = @"E:\Test\vstest.bat"; 
       var args = string.Format("/S/K \" \"{0}\" \"", filePath); 

       proc.StartInfo.FileName = command; 
       proc.StartInfo.Arguments = args; 

       //proc.StartInfo.RedirectStandardInput = true; 
       //proc.StartInfo.RedirectStandardOutput = true; 
       proc.StartInfo.CreateNoWindow = false; 
       proc.StartInfo.UseShellExecute = false; 

       proc.Start(); 
      } else { 
       Console.WriteLine("File Does not exists " + filePath); 
      } 
     } 
    } 
+0

private Process Execute(string vsEnvVar) { Process process = new Process(); ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");//assume location is in path. Otherwise use ComSpec env variable psi.CreateNoWindow = true; psi.UseShellExecute = false; psi.RedirectStandardError = true; psi.RedirectStandardInput = true; psi.RedirectStandardOutput = true; psi.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo = psi; // attach output events process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived); process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); process.StartInfo = psi; process.Start(); process.BeginErrorReadLine(); process.BeginOutputReadLine(); process.StandardInput.WriteLine(string.Format("call \"%{0}%vsvars32.bat\""), vsEnvVar); process.StandardInput.Flush(); return process; } 

现在,你可以执行任何命令,为什么2手轮报价与他们之间的空间的批处理文件? – BugFinder

回答

0

试试这个:通过写process.StandardInput

process.StandardInput.WriteLine(@"msbuild c:\MySolution.sln /t:Clean"); 
+0

感谢您的答复。我试过你的代码,但仍然无法获得所需的结果 –

+0

我得到的只是一个命令提示符打开,我无法添加任何东西。 –

+0

我修改了一下你的代码,我试图看到命令提示符窗口 –

相关问题