VS 2008 Post Build Step веселый бизнес - PullRequest
2 голосов
/ 19 сентября 2008

Хорошо, вот разбивка моего проекта: у меня есть веб-проект с подпапкой «Сценарии». Эта папка содержит несколько файлов javascript и копию JSMin.exe, а также пакетный файл, который запускает JSMin.exe для некоторых файлов. Я попытался настроить шаг пост-сборки 'call "$ (ProjectDir) Scripts \ jsmin.bat"'. Когда я выполняю сборку, пакетный файл всегда «выходит с кодом 1». Это происходит через Visual Studio или через командную строку msbuild. Я могу запустить командный файл вручную из папки Scripts, и он, кажется, работает как положено, поэтому я не уверен, в чем проблема. Вызов $ (ProjectDir) Scripts \ jsmin.bat заключен в кавычки, потому что $ (ProjectDir) может иметь пробелы (и фактически есть на моей машине). Я не уверен, что делать на этом этапе. Я попытался удалить содержимое командного файла в качестве шага после сборки, но, похоже, это тоже не сработало.

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

Спасибо!

Ответы [ 5 ]

4 голосов
/ 19 сентября 2008

Если на вашем этапе сборки есть что-то, что возвращает код ошибки, вы можете добавить:

exit 0

как последняя строка вашего шага сборки. Это предотвратит сбой сборки.

2 голосов
/ 07 ноября 2008

Рабочее решение для этого, которое я использую:

CD $ (ProjectDir)

DoStuff.bat

Никаких команд вызова или чего-либо еще не требуется, это, конечно, если у вас есть файл в каталоге вашего проекта.

1 голос
/ 03 октября 2008

Используют ли ваши сценарии или командные файлы какие-либо ссылки на пути внутри?

Я обнаружил, что командные файлы не будут работать правильно, если ссылки на пути не полностью определены.

Пример: командный файл с именем DoStuff.bat использует команду echo для добавления текстового файла.

Это не работает внутри .bat файла:

echo "test" >>"test.txt"

Этот работает внутри .bat-файла:

echo "test" >>"C:\Temp\CompileTest\test.txt"

Visual Studio Командная строка события после сборки это:

call "C:\Temp\CompileTest\DoStuff.bat"
0 голосов
/ 21 октября 2008

Возвращаясь к этой проблеме сейчас (пришлось немного перейти на другие огни)

@ Джонатан Уэбб - Я попробовал некоторые идеи, но безуспешно. На самом деле я узнал, что мы делаем нечто подобное (вызывая внешнюю программу, используя задачи после сборки) в других внутренних проектах. Я склонен полагать, что это какое-то взаимодействие с инструментом jsmin.exe или какая-то другая глупая ошибка с моей стороны.

Однако еще не все потеряно, другой разработчик обратил мое внимание на YUI Compressor и его реализацию в .NET . Через некоторые ручные манипуляции .csproj я смог достичь своих целей, а затем и некоторых (включая сжатие CSS)!

0 голосов
/ 19 сентября 2008

Почему-то, и я не знаком со спецификой выхода из файлов .bat, но либо выполнение JSMin, либо выполнение пакетного файла завершается с ненулевым кодом возврата.

Вы пытались запускать сценарии напрямую (т.е. не через JSMin.bat) как часть пост-сборки?

Редактировать: Похоже, Халлгрим имеет это.

...