Как запустить Devenv.exe из другой программы EXE?

Я пытаюсь создать приложение (.exe), которое будет использоваться для создания проектов в другой конфигурации с помощью Visual Studio Devenv.exe. Я попытался создать командный файл, чтобы сделать это как показано ниже:

cd "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE"devenv "%PROJECT_PATH%\MySolution.sln" /Rebuild "Release" /project "MyProject"   /out "%PROJECT_PATH%\AutoBuildErrorLog.txt"

где project_path каталог, где MySolution.sln хранится.

А также Мой проект это проект под MySolution решение

Выше пакетный файл работает нормально и дает ожидаемый результат. т.е. MyProject успешно строится.

Теперь я пытаюсь запустить вышеуказанную команду через приложение exe. Я пытаюсь вызвать команду, как показано ниже:

const char devncmd[] = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/devenv.exe";
const char slncmd[] = "\"C:/Solution Folder with spaces in folder name/MySolution.sln\"";
const char rebuildCmd[] = "/Rebuild";
const char releasecfg[] = "Release";
const char projectcmd[] = "/project";
const char projectnamecmd[] = "MyProject";
const char outcmd[] = "/out";
const char outName[] = "\"C:/Solution Folder with spaces in folder name/AutoBuildErrorLog.txt\"";

int rc = _spawnlp(_P_WAIT, devncmd, slncmd,
rebuildCmd, releasecfg,
projectcmd, projectnamecmd,
outcmd, outName, NULL);

При запуске выше кода, я получил сообщение об ошибке ниже.
Сообщение об ошибке от DevEnv.exe

Выше сообщение убедить меня, что DevEnv.exe способен выполнить.

Далее я пытаюсь изменить путь решения (slncmd []), как показано ниже:

const char slncmd[] = "C:/Solution Folder with spaces in folder name/MySolution.sln";

Devenv работает без ошибок, но в моем файле AutoBuildErrorLog.txt Предполагается, что есть проблема с путем сборки.

The following files were specified on the command line:

Folder
Name/MySolution.sln

These files could not be found and will not be loaded.

Кто-нибудь может указать, что могло пойти не так?

1

Решение

Если вы посмотрите в папку, содержащую devenv.exe Вы заметите, что есть также devenv.com,

При автоматизации Visual Studio для сборок используйте devenv.com, Пакетные файлы будут автоматически использовать .com скорее, чем .exe (из-за PATHEXT переменная), и вы заметите, что ваш пакетный файл не указывает расширение.

PS. Вместо того, чтобы жестко задавать путь к devenv — это можно изменить при установке — используйте VS120COMNTOOLS Переменная окружения для построения пути (в пакетном файле:%VS120COMNTOOLS%..\ide\devenv).

0

Другие решения


По вопросам рекламы [email protected]