2015-01-13 12 views
1

Я хотел бы построить проект VS 2013 из командной строки.Как открыть и запустить команду devenv build в командной строке разработчика для VS2013?

После вручную открыть «Developer Командная строка для VS2013», изменение каталога в каталог проекта и включить следующую команду

devenv myproject.csproj /build 

проект успешно построен.

Проблема в том, что я хотел бы сделать это с помощью функции C#. Я много пробовал, но никто не выработал.

Выполняя это вручную, я запускаю командную строку из ярлыка. В ярлыке на самом деле выполняется файл .bat, который настраивает среду, чтобы вы могли запускать команды, например devenv, из командной строки. это код, который я бегу

string runDevEnv = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>devenv.com "; 
string projectPath = @"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\CodedUITestProject2\CodedUITestProject2\CodedUITestProject2.csproj" ; 
string makeString = "\""; 
string slashc = "/c "; 
string makebuild = " /build"; 
string compileProject = slashc + runDevEnv + makeString + projectPath + makeString + makebuild; 
System.Diagnostics.Process.Start("CMD.exe", compileProject); 
+0

Пожалуйста, сообщите нам *, что вы пытались и что произошло, а не просто «Я много чего пробовал». Кроме того, есть ли причина, по которой вы хотите запускать Visual Studio, а не просто 'msbuild'? Вероятно, вы хотите, чтобы класс 'Process' запускал' cmd.exe'. –

+0

Проект, который я пытаюсь скомпилировать, - это проект windows phone codedUI. и за то, что я мог прочитать, только devenv может скомпилировать его. Я попытался вручную запустить msbuild и vstest.console.exe и не смог скомпилировать проект. только devenv успешно скомпилировал проект. – Limbo

+0

Ну, я бы наверняка * ожидал, что msbuild сможет справиться с этим. Опять же, вы должны объяснить все, что вы пробовали, и что случилось с вашим вопросом. –

ответ

2

Это, вероятно, легче создать пакетный файл для вызова Devenv (если вам действительно нужно), но в остальном, я подозреваю, что это просто вопрос о том, как вы цитируете - и что у вас есть > на вашем пути до devenv.exe. Попробуйте:.

string devEnv = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe"; 
string projectPath = @"C:\Users\Administrator\Documents\Visual Studio 2013\Projects\CodedUITestProject2\CodedUITestProject2\CodedUITestProject2.csproj" ; 
string compileProject = string.Format("/c \"{0}\" \"{1}\" /build", 
    devEnv, projectPath); 
Process.Start("CMD.exe", compileProject); 

(Как отмечено в комментариях, вы можете захотеть использовать devenv.com вместо devenv.exe, чтобы предотвратить саму Visual Studio от запуска Если возможно, вы можете использовать msbuild вместо этого, что бы явно лучше - я знайте, что вы не сразу работаете, но стоит ли расследовать, почему вместо того, чтобы отказаться от него.)

+0

Я попробовал для создания командного файла проблема заключается в том, что VS IDE открывается при запуске команды devenv из пакетного файла, и мне нужно ее отключить – Limbo

+0

@Limbo: попробуйте использовать 'devenv.com' вместо' devenv.exe', тогда - я верю –

+0

использовал ваш код, тот же результат. – Limbo