2016-01-22 149 views
0

我想打開使用C#代碼的Visual Studio命令提示符。從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\""  

額外的「\」是越來越增加。

請指出我缺少的東西。 謝謝

+0

什麼是你想達到什麼樣的結果呢? – MaYaN

+0

@MaYaN,我必須在解決方案文件上運行msbuild,可以使用vs 10,12或14創建解決方案文件。 – atulya

回答

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" " 
+0

感謝您的回覆,現在可以打開visual studio命令提示符。但是在命令F:\ Program \ Debug>∩╗┐cd/ D E:/ Temp/Prog中會附加一些無效字符。
我在bat文件中的第一個命令是將目錄更改爲某個項目解決方案(.sln)路徑。但是「∩╗┐」正在命令中被追加。
我使用的參數爲
var args = string.Format(「/ K \」\「{0} \」&&「{1} \」\「」,filePath,batfile); – atulya

+0

得到它的工作,將batfile的編碼更改爲沒有BOM的UTF-8。 – atulya

+0

'CMD.exe',Windows命令提示符,默認情況下不理解UTF-8,您可以嘗試'chcp 65001'將代碼頁設置爲utf8(我還沒有測試過) – Ben

相關問題