Событие перед сборкой завершается с кодом -1 в vs2010

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

C:\path\to\batch\script\PreBuildGenANTLR.bat

Пакетный скрипт содержит

@echo off pushd ..\..\Parser java -jar ..\ANTLR\antlr-3.5-complete.jar -o .ANTLR ExprCppTree.g popd

Я пробовал exit 0 exit \b 0 SET ERRORLEVEL = 0, но кажется, что независимо от того, что я делаю, скрипт запускается, но сборка останавливается, и выдаются ошибки с ошибкой MSB3073, выход с кодом -1. Я перепробовал множество других способов, чтобы этот скрипт возвращал ноль, включая шаги, описанные в http://blogs.msdn.com/b/astebner/archive/2006/08/08/691849.aspx. . Еще ничего. Скрипт работает с кучей предупреждений, но без ошибок. Он делает то, что должен, но сборка все равно останавливается и завершается с кодом -1. Что, черт возьми, я делаю неправильно? Как я могу заставить его возвращать ноль и продолжать сборку?


person user3388478    schedule 06.03.2014    source источник
comment
Вы call загружаете пакетный сценарий из события перед сборкой? call C:\path\PreBuildGenANTLR.bat Возвращает ли команда java код выхода -1? Можно попробовать поймать код выхода. java -jar ..\ANTLR\antlr-3.5-complete.jar -o .ANTLR ExprCppTree.g || verify >nul Также в конце скрипта используйте exit /b 0.   -  person David Ruhmann    schedule 06.03.2014
comment
Нет. Как я уже сказал, скрипт работает и делает все правильно, когда я запускаю его из cmd, но по какой-то причине, когда я помещаю его в vsStudio, он возвращает -1   -  person user3388478    schedule 06.03.2014


Ответы (1)


В Visual Studio 2010 все, что вам нужно сделать, это использовать диспетчер пакетов NuGet для установки пакета Antlr3. (убедитесь, что идентификатор, указанный для пакета, соответствует точно Antlr3). С установленным пакетом для компиляции грамматики вам просто нужно выбрать файл(ы) .g или .g3 в вашем проекте и установить Действие сборки< /strong> на Antlr3.

person Sam Harwell    schedule 06.03.2014