@echo off rem bcz - Clean and build the solution. rem This is another script to help Microsoft developers feel at home working on the Terminal project. rem Args: rem dbg: manually build the solution in the Debug configuration. If omitted, rem we'll use whatever the last configuration build was. rem rel: manually build the solution in the Release configuration. If rem omitted, we'll use whatever the last configuration build was. rem no_clean: Don't clean before building. This is a much faster build rem typically, but leaves artifacts from previous builds around, which rem can lead to unexpected build failures. rem exclusive: Only build the project in the cwd. If omitted, we'll try rem building the entire solution instead. if (%_LAST_BUILD_CONF%)==() ( set _LAST_BUILD_CONF=%DEFAULT_CONFIGURATION% ) set _MSBUILD_TARGET=Clean;Build set _EXCLUSIVE= set _APPX_ARGS= :ARGS_LOOP if (%1) == () goto :POST_ARGS_LOOP if (%1) == (dbg) ( echo Manually building debug set _LAST_BUILD_CONF=Debug ) if (%1) == (rel) ( echo Manually building release set _LAST_BUILD_CONF=Release ) if (%1) == (no_clean) ( set _MSBUILD_TARGET=Build ) if (%1) == (exclusive) ( set _EXCLUSIVE=1 ) shift goto :ARGS_LOOP :POST_ARGS_LOOP if "%_EXCLUSIVE%" == "1" ( set "PROJECT_NAME=" call :get_project ) else if (%_LAST_BUILD_CONF%) == (Debug) ( rem /p:AppxBundle=Never prevents us from building the appxbundle from the rem commandline. We don't want to do this from a debug build, because it rem takes ages, so disable it. if you want the appx, build release rem Only do this check if we're doing a full solution build. If we're only rem trying to build the appx, then we obviously want to build the appx. echo Skipping building appx... set _APPX_ARGS=/p:AppxBundle=false ) else ( echo Building Appx... ) if "%_EXCLUSIVE%" == "1" ( if "%PROJECT_NAME%" == "" ( goto :eof ) else echo Building only %PROJECT_NAME% ) if "%_SKIP_NUGET_RESTORE%" == "1" ( echo Skipped nuget restore ) else ( echo Performing nuget restore... nuget.exe restore %OPENCON%\OpenConsole.sln ) set _BUILD_CMDLINE="%MSBUILD%" %OPENCON%\OpenConsole.sln /t:"%_MSBUILD_TARGET%" /m /p:Configuration=%_LAST_BUILD_CONF% /p:Platform=%ARCH% %_APPX_ARGS% echo %_BUILD_CMDLINE% echo Starting build... @rem start indeterminate progress in the taskbar @rem this ` nul NUL set MSBuildEmitSolution= rem Use bx.ps1 to figure out which target we're looking at set _OUTPUT= FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -NoProfile -ExecutionPolicy Bypass -NonInteractive bx.ps1 2^> NUL`) DO ( set _OUTPUT=%%F ) if "!_OUTPUT!" == "" ( echo Could not find a .vcxproj file in this directory. echo `bx.cmd` only works in directories with a vcxproj file. echo Please navigate to directory with a project file in it, or try `bz` to build the entire solution. goto :eof ) set "__PROJECT_NAME=!_OUTPUT!" rem If we're trying to clean build, make sure to update the target here. if "%_MSBUILD_TARGET%" == "Build" ( set __MSBUILD_TARGET=%__PROJECT_NAME% ) else if "%_MSBUILD_TARGET%" == "Clean;Build" ( set __MSBUILD_TARGET=%__PROJECT_NAME%:Rebuild ) else ( echo. echo Oops... build bug in the neighborhood of configuring a build target. echo. ) rem This statement will propagate our internal variables up to the calling rem scope. Because they're all on one line, the value of our local variables rem will be evaluated before we endlocal endlocal & set "PROJECT_NAME=%__PROJECT_NAME%" & set "_MSBUILD_TARGET=%__MSBUILD_TARGET%" rem ############################################################################ :eof