Пакетный файл событий после сборки VS2008 - PullRequest
2 голосов
/ 22 августа 2010

Я пытаюсь выполнить командный файл для перемещения группы файлов после сборки, поэтому я создал событие после сборки, которое выглядит следующим образом:

$(ProjectDir)CopyPlugins.bat $(ConfigurationName)

Проблема в том, чтокогда Visual Studio пытается запустить событие, я получаю сообщение об ошибке, что процесс exited with code 9009

Проблема, как представляется, заключается в том, что VS помещает всю строку в кавычки, так что команда, которую она выполняет:

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat Debug"

Конечно, я намеревался сделать очень тонкий вариант, изменив местоположение закрывающей кавычки.

"C:\Users\kdmurray\Visual Studio 2008\Projects\Runner\Runner\CopyPlugins.bat" Debug

Есть ли способ обойти эту довольно раздражающую «помощь», которую предоставляет VS

Ответы [ 4 ]

6 голосов
/ 22 августа 2010

Создайте еще два пакетных файла, которые просто запускают первый с разными аргументами.

CopyPlugins-debug.bat Call CopyPlugins.bat debug

CopyPlugins-release.bat Call CopyPlugins.bat release

А в VS событие после постройки "$(ProjectDir)CopyPlugins-$(ConfigurationName).bat"

0 голосов
/ 29 августа 2012

Просто наберите вот так

d:\foo\bar\myMainScript.bat "$(MY_VSPROPS_MACRO_VAR_00)"

Это сработало для меня. Не используйте функцию CALL для вызова командного файла !!!.

Передайте все параметры в основной пакетный файл и обработайте вещи внутри. Если у вас есть другие пакеты или наборы пакетов для вызова, не вызывайте их в событии после сборки, просто вызовите другие файлы пакета из основного файла пакета.

0 голосов
/ 22 августа 2010

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

"$(ProjectDir)CopyPlugins.bat" $(ConfigurationName)

Это сработало для меня для проекта C #, расположенного в каталоге спространство на своем пути.

0 голосов
/ 22 августа 2010

Если вы пытаетесь выполнить сложное копирование после сборки, возможно, стоит посмотреть на проект MSBuild Community Tasks . У него есть задача, обертывающая RoboCopy.exe, которая может быть более чистым способом выполнить вашу задачу.

Обычно я делаю отдельный "сборочный" проект, который пуст и не выполняет ничего, кроме выполнения шагов до / после сборки. Работает довольно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...