Visual Studio 2017: открыть и построить решение из вызова командной строки - PullRequest
0 голосов
/ 11 июня 2018

В Visual Studio 2017 (или, возможно, любой версии) я хочу открыть решение в IDE и запустить его сборку из командной строки.Если решение уже открыто, я просто хочу начать его сборку (в IDE).

Таким образом, я могу открыть решение следующим образом:

devenv solution.sln

Или я могу построить это так:

devenv /build solution.sln

Также есть это:

devenv solution.sln /command ...

Но документация по каким "командам""Есть очень трудно узнать о ... Например, какой-то пользовательский макрос, но я предполагаю, что есть другие встроенные команды?- это может помочь ...?

Но я не уверен, как:

  • Открыть решение в IDE и сразу его собрать
  • Еслион уже открыт, просто начните его сборку.

Есть ли способ сделать это?

Мой пример использования - запустить сборку из IBM Rhapsody.В MSVS2012 он поддерживал надстройку Rhapsody, которая выполняла эти задачи ... но надстройки устарели с 2013 года, поэтому я могу заставить Rhapsody делать то, что я хочу, переписав его содержимое make-файла - make-файл будет просто вызывать сценарий пакетного файла, которыйбудет выполнять команды, которые я пытаюсь сделать в этом вопросе - и тогда плагин Rhapsody готов:)

1 Ответ

0 голосов
/ 23 июня 2018

Обратите внимание, что:

  1. devenv solution.sln открывает решение только в новом экземпляре VS IDE.
  2. devenv /build solution.sln создает только те проекты, которые были изменены с момента последней сборки безоткрытие VS IDE.Чтобы построить все проекты в решении, используйте вместо этого / rebuild.

Итак, если вы хотите

Откройте решение в IDE и сразу же создайте его

вы должны выполнить две команды последовательно:

devenv solution.sln  
devenv /rebuild solution.sln

Затем во второй раз используйте / rebuild only, чтобы избежать открытия нового экземпляра VS.

Обновление : вы можете сделать файл .cmd или .bat , содержащий следующее:

tasklist /fi "imagename eq devenv.exe" /v | find /i "solution" 2>NUL
    if "%ERRORLEVEL%"=="0" goto solution_is_running
    if "%ERRORLEVEL%"=="1" goto solution_is_closed

:solution_is_running
devenv /rebuild solution.sln
goto:eof

:solution_is_closed
devenv solution.sln
devenv /rebuild solution.sln
goto:eof

Илииспользовать:

Taskkill /IM devenv.exe /F
devenv solution.sln  
devenv /rebuild solution.sln
...