Запуск Grunt из командной строки post build события Visual Studio - программирование
Подтвердить что ты не робот

Запуск Grunt из командной строки post build события Visual Studio

Я попытался сделать это как в Visual Studio 2010, так и в Visual Studio 2012. Если мой файл Gruntfile.js находится в корне моего проекта, я могу запустить команду "grunt" из командной строки post build event, и она работает без проблем.

grunt or grunt.cmd

Но если он находится в подкаталоге

$(ProjectDir)Public\grunt or $(ProjectDir)Public\grunt.cmd

Это дает мне эту ошибку

The command "c:\web\Public\grunt.cmd" exited with code 9009.

Я изучаю это, но я не нахожу там никакой помощи. Я нашел в грубой документации, что мне нужно использовать "grunt.cmd" вместо того, чтобы просто называть "хрюкать", но это мне не очень помогает.

4b9b3361

Ответ 1

Что происходит, вы указываете точный путь для grunt, который фактически не находится в $(ProjectDir) Public \. Когда вы находитесь в этом каталоге в командной строке и набираете grunt, он выполняется, потому что вы задали переменную окружения пути, чтобы включить каталог, в котором живет grunt.

К счастью, команды post build в VS действуют как командное окно, поэтому вы можете поместить это в свои команды сборки post:

CD $(ProjectDir)Public\
grunt

И это должно работать (если задана задание по умолчанию grunt).

Ответ 2

Вы можете запускать как пост-сборку с помощью функции runner, как показано ниже. Щелкните правой кнопкой мыши по сборке → привязки → , а затем укажите, нужно ли вам запускать пост или предварительно построить

Ответ 3

Если вы открыли Visual Studio, а затем:

  • Установленный менеджер пакетов node (npm) и grunt
  • Затем попытался выполнить команды pre/post build, включая команду grunt.

Строка просто завершится неудачей с сообщением "вышло с кодом 9009". (Значение "Я не знаю, что такое команда grunt" )

Чтобы разрешить эту ситуацию, просто закройте визуальную студию и заново ее откройте (как упоминал @longda в своем комментарии), и все будет работать нормально.

Я использую VS 2013 Premium и последнюю версию npm/grunt.

Ответ 4

В некотором роде, у меня была странная проблема, что xcopy не запускался после grunt, запуская их как одну команду, зафиксировав ее:

cd $(SolutionDir)..\App
grunt release && xcopy "$(SolutionDir)..\App\release" "$(TargetDir)Content\" /Y /E /S