Я хотел бы построить проект VS 2013 из командной строки.
После этого вручную откройте "Командная строка разработчика для VS2013", изменив каталог в каталог проекта и введя следующую команду
devenv myproject.csproj /build
проект успешно построен.
Проблема в том, что я хотел бы сделать это с помощью функции С#. Я много пробовал, но никто не выработал.
Когда вы делаете это вручную, я запускаю командную строку из ярлыка. В ярлыке на самом деле выполняется файл .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);
Вероятно, проще создать пакетный файл для вызова 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
вместо этого, это будет явно лучше - я знаю, что это не работая для вас немедленно, но стоит исследовать, почему вместо отказа от нее.)
devenv.com
вместо devenv.exe
- я полагаю, для этого он и devenv.exe
.
msbuild
? Возможно, вы хотите, чтобы классProcess
запустилcmd.exe
.