RebuildWithLocalMSBuild.cmd (59 lines of code) (raw):
:: This script will:
:: 1) Rebuild MSBuild source tree (x86 only).
:: 2) Create a "bootstrapped" copy of the build output in bin\MSBuild.
:: 3) Build the source tree again with the MSBuild.exe in step 2.
@echo off
setlocal
:: Restore build tools
call %~dp0init-tools.cmd
set RUNTIME_HOST=%~dp0Tools\dotnetcli\dotnet.exe
:: build MSBuild with the MSBuild binaries from BuildTools
set MSBUILDLOGPATH=%~dp0msbuild_bootstrap_build.log
set MSBUILD_CUSTOM_PATH=%~dp0Tools\MSBuild.exe
echo.
echo ** Rebuilding MSBuild with binaries from BuildTools
call "%~dp0build.cmd" /t:Rebuild /p:Configuration=Debug-NetCore /p:"OverrideToolHost=%RUNTIME_HOST%"
if %ERRORLEVEL% NEQ 0 (
echo.
echo Bootstrap build failed with errorlevel %ERRORLEVEL% 1>&2
goto :error
)
:: Move initial build to bootstrap directory
:: Kill Roslyn, which may have handles open to files we want
taskkill /F /IM vbcscompiler.exe
set MSBUILDLOGPATH=%~dp0msbuild_move_bootstrap.log
set MSBUILD_ARGS=/verbosity:minimal targets\BootStrapMSbuild.proj /p:Configuration=Debug-NetCore
echo.
echo ** Moving bootstrapped MSBuild to the bootstrap folder
call "%~dp0build.cmd"
set MSBUILD_ARGS=
if %ERRORLEVEL% NEQ 0 (
echo.
echo build.cmd with bootstrapped MSBuild failed with errorlevel %ERRORLEVEL% 1>&2
goto :error
)
:: Rebuild with bootstrapped msbuild
set MSBUILDLOGPATH=%~dp0msbuild_local_build.log
set RUNTIME_HOST="%~dp0bin\Bootstrap\CoreRun.exe"
set MSBUILD_CUSTOM_PATH="%~dp0bin\Bootstrap\MSBuild.exe"
echo.
echo ** Rebuilding MSBuild with locally built binaries
call "%~dp0build.cmd" /t:RebuildAndTest /p:Configuration=Debug-NetCore
if %ERRORLEVEL% NEQ 0 (
echo.
echo Local build failed with error level %ERRORLEVEL% 1>&2
goto :error
)
:success
echo.
echo ++++++++++++++++
echo + SUCCESS :-) +
echo ++++++++++++++++
echo.
exit /b 0
:error
echo.
echo ---------------------------------------
echo - RebuildWithLocalMSBuild.cmd FAILED. -
echo ---------------------------------------
exit /b 1