从C#代码打开Visual Studio命令提示符

时间:2016-01-22 11:03:41

标签: c# visual-studio-2012

我正在尝试使用C#代码打开Visual Studio命令提示符。

这是我的代码

private void Execute(string vsEnvVar)
{

 var vsInstallPath = Environment.GetEnvironmentVariable(vsEnvVar);

 // vsEnvVar can be VS100COMNTOOLS, VS120COMNTOOLS, VS140COMNTOOLS

 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("/K  \"{0}\" \"{1}\"" ,filePath, batfile);  

        proc.StartInfo.FileName = command;
        proc.StartInfo.Arguments = args;
        proc.StartInfo.CreateNoWindow = false;
        proc.StartInfo.UseShellExecute = false;  

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

但args字符串格式不正确。 我收到格式化的字符串

"/K  \"C:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\Tools\\vsvars32.bat\" \"E:\\Test\\vstest.bat\""    

额外" \"正在增加。

请指出我缺少的东西。 感谢

1 个答案:

答案 0 :(得分:1)

字符串正在按照您的要求进行格式化,但您提出了错误的要求。 "E:\Test\VStest.bat"作为参数传递给VCVars.bat,但我怀疑你希望它在它之后被执行。

试试这个:

var args = string.Format("/S/K \" \"{0}\" && \"{1}\" \"" ,filePath, batFile);

这应该产生:

"/S/K \" \"C:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\Tools\\vsvars32.bat\" && \"E:\\Test\\vstest.bat\" \" \"

字符串是:

/S/K " "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat" && "E:\Test\vstest.bat" "