2

私の PostBuildEvent では、.bat便宜上 (編集、ソース管理など) ファイルを呼び出します。

call "$(ProjectDir)..\SolutionItems\PostBuild.bat" "$(ProjectDir)" $(ConfigurationName)

PostBuild.bat:

echo ProjectDir: %~1 ConfigurationName: %2

rem echo "copy stuff"
rem robocopy "%~1..\SolutionItems\SomeFolder" "%~1\Bin" *.lic /v /PURGE

....

echo "compile js"
"%~1..\SolutionItems\Javascript\BuildJs.bat" "%~1"

BuildJs.bat:

rem compile public js
call "C:\Program Files\Java\jre6\bin\java.exe" -jar "%~1..\SolutionItems\Javascript\compiler.jar" --js "%~1Js\Common.js" --js_output_file  "%~1Js\Public.min.js" --create_source_map "%~1Js\Public.min.js.map" --source_map_format=V3 --compilation_level SIMPLE_OPTIMIZATIONS --summary_detail_level 3 --externs "%~1..\SolutionItems\Javascript\jquery-1.9.js"
rem compile admin js
call "C:\Program Files\Java\jre6\bin\java.exe" -jar "%~1..\SolutionItems\Javascript\compiler.jar" --js "%~1Js\Common.js" --js "%~1Admin\assets\js\admin.js" --js_output_file  "%~1Admin\Assets\Js\Admin.min.js" --create_source_map "%~1Js\Admin.min.js.map" --source_map_format=V3 --compilation_level SIMPLE_OPTIMIZATIONS --summary_detail_level 3 --externs "%~1..\SolutionItems\Javascript\jquery-1.9.js"

最初の呼び出しがBuildJs.bat失敗した場合、それは 2 番目の呼び出しによって飲み込まれ、VisualStudio はエラーを表示せず (出力ウィンドウでのみ確認できます)、ビルドは成功します。

私が見つけた唯一の回避策は、%ERRORLEVEL%この方法で処理することです:

rem compile public js
call "C:\Program Files\Java\jre6\bin\java.exe" -jar "%~1..\SolutionItems\Javascript\compiler.jar" --js "%~1Js\Common.js" --js_output_file  "%~1Js\Public.min.js" --create_source_map "%~1Js\Public.min.js.map" --source_map_format=V3 --compilation_level SIMPLE_OPTIMIZATIONS --summary_detail_level 3 --externs "%~1..\SolutionItems\Javascript\jquery-1.8.js"
IF NOT %ERRORLEVEL% == 0 GOTO END
rem compile admin js
call "C:\Program Files\Java\jre6\bin\java.exe" -jar "%~1..\SolutionItems\Javascript\compiler.jar" --js "%~1Js\Common.js" --js "%~1Admin\assets\js\admin.js" --js_output_file  "%~1Admin\Assets\Js\Admin.min.js" --create_source_map "%~1Js\Admin.min.js.map" --source_map_format=V3 --compilation_level SIMPLE_OPTIMIZATIONS --summary_detail_level 3 --externs "%~1..\SolutionItems\Javascript\jquery-1.9.js"
:END

新しい行を追加する必要があるため、このソリューションは本当に好きではありませんIF NOT %ERRORLEVEL% == 0 GOTO END。他のソリューションはありますか?

- - - - - - - - -アップデート - - - - - - - - - - -

jebの提案に従ってスクリプトを更新しました。

set "param1=%~1"
set "lastError=0"    

echo compile public js
call :javaCaller --js_output_file "%~1Js\Public.min.js" --create_source_map "%~1Js\Public.min.js.map"
echo compile admin js
call :javaCaller --js "%~1Admin\assets\js\admin.js" --js_output_file  "%~1Admin\Assets\Js\Admin.min.js" --create_source_map "%~1Js\Admin.min.js.map"
GOTO EXIT
    
:javaCaller
if %lastError% GTR 0 GOTO EXIT
call "C:\Program Files\Java\jre6\bin\java.exe" -jar "%param1%..\SolutionItems\Javascript\compiler.jar" --js "%param1%Js\Common.js" %*  --source_map_format=V3 --compilation_level SIMPLE_OPTIMIZATIONS --summary_detail_level 3 --externs "%param1%..\SolutionItems\Javascript\jquery-1.9.js"
set "lastError=%errorlevel%"

:EXIT
exit /b %lastError%
4

1 に答える 1