System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ff9e84d71de52a1e736fc5835fa4dc6153f918cf:


0000: 40 45 43 48 4f 20 4f 46 46 0d 0a 0d 0a 3a 3a 0d  @ECHO OFF....::.
0010: 0a 3a 3a 20 62 75 69 6c 64 2e 62 61 74 20 2d 2d  .:: build.bat --
0020: 0d 0a 3a 3a 0d 0a 3a 3a 20 57 72 61 70 70 65 72  ..::..:: Wrapper
0030: 20 54 6f 6f 6c 20 66 6f 72 20 4d 53 42 75 69 6c   Tool for MSBuil
0040: 64 0d 0a 3a 3a 0d 0a 3a 3a 20 57 72 69 74 74 65  d..::..:: Writte
0050: 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61 63 68  n by Joe Mistach
0060: 6b 69 6e 2e 0d 0a 3a 3a 20 52 65 6c 65 61 73 65  kin...:: Release
0070: 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20  d to the public 
0080: 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20 79  domain, use at y
0090: 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 3a  our own risk!..:
00a0: 3a 0d 0a 0d 0a 53 45 54 4c 4f 43 41 4c 0d 0a 0d  :....SETLOCAL...
00b0: 0a 52 45 4d 20 53 45 54 20 5f 5f 45 43 48 4f 3d  .REM SET __ECHO=
00c0: 45 43 48 4f 0d 0a 52 45 4d 20 53 45 54 20 5f 5f  ECHO..REM SET __
00d0: 45 43 48 4f 32 3d 45 43 48 4f 0d 0a 52 45 4d 20  ECHO2=ECHO..REM 
00e0: 53 45 54 20 5f 5f 45 43 48 4f 33 3d 45 43 48 4f  SET __ECHO3=ECHO
00f0: 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44  ..IF NOT DEFINED
0100: 20 5f 41 45 43 48 4f 20 28 53 45 54 20 5f 41 45   _AECHO (SET _AE
0110: 43 48 4f 3d 52 45 4d 29 0d 0a 49 46 20 4e 4f 54  CHO=REM)..IF NOT
0120: 20 44 45 46 49 4e 45 44 20 5f 43 45 43 48 4f 20   DEFINED _CECHO 
0130: 28 53 45 54 20 5f 43 45 43 48 4f 3d 52 45 4d 29  (SET _CECHO=REM)
0140: 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44  ..IF NOT DEFINED
0150: 20 5f 56 45 43 48 4f 20 28 53 45 54 20 5f 56 45   _VECHO (SET _VE
0160: 43 48 4f 3d 52 45 4d 29 0d 0a 0d 0a 25 5f 41 45  CHO=REM)....%_AE
0170: 43 48 4f 25 20 52 75 6e 6e 69 6e 67 20 25 30 20  CHO% Running %0 
0180: 25 2a 0d 0a 0d 0a 53 45 54 20 44 55 4d 4d 59 32  %*....SET DUMMY2
0190: 3d 25 33 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45  =%3....IF DEFINE
01a0: 44 20 44 55 4d 4d 59 32 20 28 0d 0a 20 20 47 4f  D DUMMY2 (..  GO
01b0: 54 4f 20 75 73 61 67 65 0d 0a 29 0d 0a 0d 0a 53  TO usage..)....S
01c0: 45 54 20 52 4f 4f 54 3d 25 7e 64 70 30 5c 2e 2e  ET ROOT=%~dp0\..
01d0: 0d 0a 53 45 54 20 52 4f 4f 54 3d 25 52 4f 4f 54  ..SET ROOT=%ROOT
01e0: 3a 5c 5c 3d 5c 25 0d 0a 0d 0a 25 5f 56 45 43 48  :\\=\%....%_VECH
01f0: 4f 25 20 52 6f 6f 74 20 3d 20 27 25 52 4f 4f 54  O% Root = '%ROOT
0200: 25 27 0d 0a 0d 0a 53 45 54 20 43 4f 4e 46 49 47  %'....SET CONFIG
0210: 55 52 41 54 49 4f 4e 3d 25 31 0d 0a 0d 0a 49 46  URATION=%1....IF
0220: 20 44 45 46 49 4e 45 44 20 43 4f 4e 46 49 47 55   DEFINED CONFIGU
0230: 52 41 54 49 4f 4e 20 28 0d 0a 20 20 43 41 4c 4c  RATION (..  CALL
0240: 20 3a 66 6e 5f 55 6e 71 75 6f 74 65 56 61 72 69   :fn_UnquoteVari
0250: 61 62 6c 65 20 43 4f 4e 46 49 47 55 52 41 54 49  able CONFIGURATI
0260: 4f 4e 0d 0a 29 20 45 4c 53 45 20 28 0d 0a 20 20  ON..) ELSE (..  
0270: 25 5f 41 45 43 48 4f 25 20 4e 6f 20 63 6f 6e 66  %_AECHO% No conf
0280: 69 67 75 72 61 74 69 6f 6e 20 73 70 65 63 69 66  iguration specif
0290: 69 65 64 2c 20 75 73 69 6e 67 20 64 65 66 61 75  ied, using defau
02a0: 6c 74 2e 2e 2e 0d 0a 20 20 53 45 54 20 43 4f 4e  lt.....  SET CON
02b0: 46 49 47 55 52 41 54 49 4f 4e 3d 52 65 6c 65 61  FIGURATION=Relea
02c0: 73 65 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f  se..)....%_VECHO
02d0: 25 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  % Configuration 
02e0: 3d 20 27 25 43 4f 4e 46 49 47 55 52 41 54 49 4f  = '%CONFIGURATIO
02f0: 4e 25 27 0d 0a 0d 0a 53 45 54 20 50 4c 41 54 46  N%'....SET PLATF
0300: 4f 52 4d 3d 25 32 0d 0a 0d 0a 49 46 20 44 45 46  ORM=%2....IF DEF
0310: 49 4e 45 44 20 50 4c 41 54 46 4f 52 4d 20 28 0d  INED PLATFORM (.
0320: 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 71 75  .  CALL :fn_Unqu
0330: 6f 74 65 56 61 72 69 61 62 6c 65 20 50 4c 41 54  oteVariable PLAT
0340: 46 4f 52 4d 0d 0a 29 20 45 4c 53 45 20 28 0d 0a  FORM..) ELSE (..
0350: 20 20 25 5f 41 45 43 48 4f 25 20 4e 6f 20 70 6c    %_AECHO% No pl
0360: 61 74 66 6f 72 6d 20 73 70 65 63 69 66 69 65 64  atform specified
0370: 2c 20 75 73 69 6e 67 20 64 65 66 61 75 6c 74 2e  , using default.
0380: 2e 2e 0d 0a 20 20 53 45 54 20 50 4c 41 54 46 4f  ....  SET PLATFO
0390: 52 4d 3d 57 69 6e 33 32 0d 0a 29 0d 0a 0d 0a 25  RM=Win32..)....%
03a0: 5f 56 45 43 48 4f 25 20 50 6c 61 74 66 6f 72 6d  _VECHO% Platform
03b0: 20 3d 20 27 25 50 4c 41 54 46 4f 52 4d 25 27 0d   = '%PLATFORM%'.
03c0: 0a 0d 0a 53 45 54 20 42 41 53 45 5f 43 4f 4e 46  ...SET BASE_CONF
03d0: 49 47 55 52 41 54 49 4f 4e 3d 25 43 4f 4e 46 49  IGURATION=%CONFI
03e0: 47 55 52 41 54 49 4f 4e 25 0d 0a 53 45 54 20 42  GURATION%..SET B
03f0: 41 53 45 5f 43 4f 4e 46 49 47 55 52 41 54 49 4f  ASE_CONFIGURATIO
0400: 4e 3d 25 42 41 53 45 5f 43 4f 4e 46 49 47 55 52  N=%BASE_CONFIGUR
0410: 41 54 49 4f 4e 3a 4d 61 6e 61 67 65 64 4f 6e 6c  ATION:ManagedOnl
0420: 79 3d 25 0d 0a 53 45 54 20 42 41 53 45 5f 43 4f  y=%..SET BASE_CO
0430: 4e 46 49 47 55 52 41 54 49 4f 4e 3d 25 42 41 53  NFIGURATION=%BAS
0440: 45 5f 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 3a  E_CONFIGURATION:
0450: 4e 61 74 69 76 65 4f 6e 6c 79 3d 25 0d 0a 53 45  NativeOnly=%..SE
0460: 54 20 42 41 53 45 5f 43 4f 4e 46 49 47 55 52 41  T BASE_CONFIGURA
0470: 54 49 4f 4e 3d 25 42 41 53 45 5f 43 4f 4e 46 49  TION=%BASE_CONFI
0480: 47 55 52 41 54 49 4f 4e 3a 53 74 61 74 69 63 3d  GURATION:Static=
0490: 25 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 42 61  %....%_VECHO% Ba
04a0: 73 65 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  seConfiguration 
04b0: 3d 20 27 25 42 41 53 45 5f 43 4f 4e 46 49 47 55  = '%BASE_CONFIGU
04c0: 52 41 54 49 4f 4e 25 27 0d 0a 0d 0a 53 45 54 20  RATION%'....SET 
04d0: 54 4f 4f 4c 53 3d 25 7e 64 70 30 0d 0a 53 45 54  TOOLS=%~dp0..SET
04e0: 20 54 4f 4f 4c 53 3d 25 54 4f 4f 4c 53 3a 7e 30   TOOLS=%TOOLS:~0
04f0: 2c 2d 31 25 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25  ,-1%....%_VECHO%
0500: 20 54 6f 6f 6c 73 20 3d 20 27 25 54 4f 4f 4c 53   Tools = '%TOOLS
0510: 25 27 0d 0a 0d 0a 53 45 54 20 45 58 54 45 52 4e  %'....SET EXTERN
0520: 41 4c 53 3d 25 52 4f 4f 54 25 5c 45 78 74 65 72  ALS=%ROOT%\Exter
0530: 6e 61 6c 73 0d 0a 53 45 54 20 45 58 54 45 52 4e  nals..SET EXTERN
0540: 41 4c 53 3d 25 45 58 54 45 52 4e 41 4c 53 3a 5c  ALS=%EXTERNALS:\
0550: 5c 3d 5c 25 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25  \=\%....%_VECHO%
0560: 20 45 78 74 65 72 6e 61 6c 73 20 3d 20 27 25 45   Externals = '%E
0570: 58 54 45 52 4e 41 4c 53 25 27 0d 0a 0d 0a 49 46  XTERNALS%'....IF
0580: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 56 53 57   NOT DEFINED VSW
0590: 48 45 52 45 5f 45 58 45 20 28 0d 0a 20 20 53 45  HERE_EXE (..  SE
05a0: 54 20 56 53 57 48 45 52 45 5f 45 58 45 3d 25 45  T VSWHERE_EXE=%E
05b0: 58 54 45 52 4e 41 4c 53 25 5c 76 73 77 68 65 72  XTERNALS%\vswher
05c0: 65 5c 76 73 77 68 65 72 65 2e 65 78 65 0d 0a 29  e\vswhere.exe..)
05d0: 0d 0a 0d 0a 53 45 54 20 56 53 57 48 45 52 45 5f  ....SET VSWHERE_
05e0: 45 58 45 3d 25 56 53 57 48 45 52 45 5f 45 58 45  EXE=%VSWHERE_EXE
05f0: 3a 5c 5c 3d 5c 25 0d 0a 0d 0a 25 5f 56 45 43 48  :\\=\%....%_VECH
0600: 4f 25 20 56 73 57 68 65 72 65 45 78 65 20 3d 20  O% VsWhereExe = 
0610: 27 25 56 53 57 48 45 52 45 5f 45 58 45 25 27 0d  '%VSWHERE_EXE%'.
0620: 0a 0d 0a 49 46 20 45 58 49 53 54 20 22 25 54 4f  ...IF EXIST "%TO
0630: 4f 4c 53 25 5c 73 65 74 5f 25 43 4f 4e 46 49 47  OLS%\set_%CONFIG
0640: 55 52 41 54 49 4f 4e 25 5f 25 50 4c 41 54 46 4f  URATION%_%PLATFO
0650: 52 4d 25 2e 62 61 74 22 20 28 0d 0a 20 20 43 41  RM%.bat" (..  CA
0660: 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f  LL :fn_ResetErro
0670: 72 4c 65 76 65 6c 0d 0a 0d 0a 20 20 25 5f 41 45  rLevel....  %_AE
0680: 43 48 4f 25 20 52 75 6e 6e 69 6e 67 20 22 25 54  CHO% Running "%T
0690: 4f 4f 4c 53 25 5c 73 65 74 5f 25 43 4f 4e 46 49  OOLS%\set_%CONFI
06a0: 47 55 52 41 54 49 4f 4e 25 5f 25 50 4c 41 54 46  GURATION%_%PLATF
06b0: 4f 52 4d 25 2e 62 61 74 22 2e 2e 2e 0d 0a 20 20  ORM%.bat".....  
06c0: 25 5f 5f 45 43 48 4f 33 25 20 43 41 4c 4c 20 22  %__ECHO3% CALL "
06d0: 25 54 4f 4f 4c 53 25 5c 73 65 74 5f 25 43 4f 4e  %TOOLS%\set_%CON
06e0: 46 49 47 55 52 41 54 49 4f 4e 25 5f 25 50 4c 41  FIGURATION%_%PLA
06f0: 54 46 4f 52 4d 25 2e 62 61 74 22 0d 0a 0d 0a 20  TFORM%.bat".... 
0700: 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20 31   IF ERRORLEVEL 1
0710: 20 28 0d 0a 20 20 20 20 45 43 48 4f 20 46 69 6c   (..    ECHO Fil
0720: 65 20 22 25 54 4f 4f 4c 53 25 5c 73 65 74 5f 25  e "%TOOLS%\set_%
0730: 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 25 5f 25  CONFIGURATION%_%
0740: 50 4c 41 54 46 4f 52 4d 25 2e 62 61 74 22 20 66  PLATFORM%.bat" f
0750: 61 69 6c 65 64 2e 0d 0a 20 20 20 20 47 4f 54 4f  ailed...    GOTO
0760: 20 65 72 72 6f 72 73 0d 0a 20 20 29 0d 0a 29 0d   errors..  )..).
0770: 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45  ...IF NOT DEFINE
0780: 44 20 4e 4f 55 53 45 52 20 28 0d 0a 20 20 49 46  D NOUSER (..  IF
0790: 20 45 58 49 53 54 20 22 25 54 4f 4f 4c 53 25 5c   EXIST "%TOOLS%\
07a0: 73 65 74 5f 75 73 65 72 5f 25 55 53 45 52 4e 41  set_user_%USERNA
07b0: 4d 45 25 5f 25 42 41 53 45 5f 43 4f 4e 46 49 47  ME%_%BASE_CONFIG
07c0: 55 52 41 54 49 4f 4e 25 5f 25 50 4c 41 54 46 4f  URATION%_%PLATFO
07d0: 52 4d 25 2e 62 61 74 22 20 28 0d 0a 20 20 20 20  RM%.bat" (..    
07e0: 43 41 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72  CALL :fn_ResetEr
07f0: 72 6f 72 4c 65 76 65 6c 0d 0a 0d 0a 20 20 20 20  rorLevel....    
0800: 25 5f 41 45 43 48 4f 25 20 52 75 6e 6e 69 6e 67  %_AECHO% Running
0810: 20 22 25 54 4f 4f 4c 53 25 5c 73 65 74 5f 75 73   "%TOOLS%\set_us
0820: 65 72 5f 25 55 53 45 52 4e 41 4d 45 25 5f 25 42  er_%USERNAME%_%B
0830: 41 53 45 5f 43 4f 4e 46 49 47 55 52 41 54 49 4f  ASE_CONFIGURATIO
0840: 4e 25 5f 25 50 4c 41 54 46 4f 52 4d 25 2e 62 61  N%_%PLATFORM%.ba
0850: 74 22 2e 2e 2e 0d 0a 20 20 20 20 25 5f 5f 45 43  t".....    %__EC
0860: 48 4f 33 25 20 43 41 4c 4c 20 22 25 54 4f 4f 4c  HO3% CALL "%TOOL
0870: 53 25 5c 73 65 74 5f 75 73 65 72 5f 25 55 53 45  S%\set_user_%USE
0880: 52 4e 41 4d 45 25 5f 25 42 41 53 45 5f 43 4f 4e  RNAME%_%BASE_CON
0890: 46 49 47 55 52 41 54 49 4f 4e 25 5f 25 50 4c 41  FIGURATION%_%PLA
08a0: 54 46 4f 52 4d 25 2e 62 61 74 22 0d 0a 0d 0a 20  TFORM%.bat".... 
08b0: 20 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c     IF ERRORLEVEL
08c0: 20 31 20 28 0d 0a 20 20 20 20 20 20 45 43 48 4f   1 (..      ECHO
08d0: 20 46 69 6c 65 20 22 25 54 4f 4f 4c 53 25 5c 73   File "%TOOLS%\s
08e0: 65 74 5f 75 73 65 72 5f 25 55 53 45 52 4e 41 4d  et_user_%USERNAM
08f0: 45 25 5f 25 42 41 53 45 5f 43 4f 4e 46 49 47 55  E%_%BASE_CONFIGU
0900: 52 41 54 49 4f 4e 25 5f 25 50 4c 41 54 46 4f 52  RATION%_%PLATFOR
0910: 4d 25 2e 62 61 74 22 20 66 61 69 6c 65 64 2e 0d  M%.bat" failed..
0920: 0a 20 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f  .      GOTO erro
0930: 72 73 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a  rs..    )..  )..
0940: 0d 0a 20 20 49 46 20 45 58 49 53 54 20 22 25 54  ..  IF EXIST "%T
0950: 4f 4f 4c 53 25 5c 73 65 74 5f 75 73 65 72 5f 25  OOLS%\set_user_%
0960: 55 53 45 52 4e 41 4d 45 25 5f 25 42 41 53 45 5f  USERNAME%_%BASE_
0970: 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 25 2e 62  CONFIGURATION%.b
0980: 61 74 22 20 28 0d 0a 20 20 20 20 43 41 4c 4c 20  at" (..    CALL 
0990: 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f 72 4c 65  :fn_ResetErrorLe
09a0: 76 65 6c 0d 0a 0d 0a 20 20 20 20 25 5f 41 45 43  vel....    %_AEC
09b0: 48 4f 25 20 52 75 6e 6e 69 6e 67 20 22 25 54 4f  HO% Running "%TO
09c0: 4f 4c 53 25 5c 73 65 74 5f 75 73 65 72 5f 25 55  OLS%\set_user_%U
09d0: 53 45 52 4e 41 4d 45 25 5f 25 42 41 53 45 5f 43  SERNAME%_%BASE_C
09e0: 4f 4e 46 49 47 55 52 41 54 49 4f 4e 25 2e 62 61  ONFIGURATION%.ba
09f0: 74 22 2e 2e 2e 0d 0a 20 20 20 20 25 5f 5f 45 43  t".....    %__EC
0a00: 48 4f 33 25 20 43 41 4c 4c 20 22 25 54 4f 4f 4c  HO3% CALL "%TOOL
0a10: 53 25 5c 73 65 74 5f 75 73 65 72 5f 25 55 53 45  S%\set_user_%USE
0a20: 52 4e 41 4d 45 25 5f 25 42 41 53 45 5f 43 4f 4e  RNAME%_%BASE_CON
0a30: 46 49 47 55 52 41 54 49 4f 4e 25 2e 62 61 74 22  FIGURATION%.bat"
0a40: 0d 0a 0d 0a 20 20 20 20 49 46 20 45 52 52 4f 52  ....    IF ERROR
0a50: 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20 20 20 20  LEVEL 1 (..     
0a60: 20 45 43 48 4f 20 46 69 6c 65 20 22 25 54 4f 4f   ECHO File "%TOO
0a70: 4c 53 25 5c 73 65 74 5f 75 73 65 72 5f 25 55 53  LS%\set_user_%US
0a80: 45 52 4e 41 4d 45 25 5f 25 42 41 53 45 5f 43 4f  ERNAME%_%BASE_CO
0a90: 4e 46 49 47 55 52 41 54 49 4f 4e 25 2e 62 61 74  NFIGURATION%.bat
0aa0: 22 20 66 61 69 6c 65 64 2e 0d 0a 20 20 20 20 20  " failed...     
0ab0: 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20   GOTO errors..  
0ac0: 20 20 29 0d 0a 20 20 29 0d 0a 0d 0a 20 20 49 46    )..  )....  IF
0ad0: 20 45 58 49 53 54 20 22 25 54 4f 4f 4c 53 25 5c   EXIST "%TOOLS%\
0ae0: 73 65 74 5f 75 73 65 72 5f 25 55 53 45 52 4e 41  set_user_%USERNA
0af0: 4d 45 25 2e 62 61 74 22 20 28 0d 0a 20 20 20 20  ME%.bat" (..    
0b00: 43 41 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72  CALL :fn_ResetEr
0b10: 72 6f 72 4c 65 76 65 6c 0d 0a 0d 0a 20 20 20 20  rorLevel....    
0b20: 25 5f 41 45 43 48 4f 25 20 52 75 6e 6e 69 6e 67  %_AECHO% Running
0b30: 20 22 25 54 4f 4f 4c 53 25 5c 73 65 74 5f 75 73   "%TOOLS%\set_us
0b40: 65 72 5f 25 55 53 45 52 4e 41 4d 45 25 2e 62 61  er_%USERNAME%.ba
0b50: 74 22 2e 2e 2e 0d 0a 20 20 20 20 25 5f 5f 45 43  t".....    %__EC
0b60: 48 4f 33 25 20 43 41 4c 4c 20 22 25 54 4f 4f 4c  HO3% CALL "%TOOL
0b70: 53 25 5c 73 65 74 5f 75 73 65 72 5f 25 55 53 45  S%\set_user_%USE
0b80: 52 4e 41 4d 45 25 2e 62 61 74 22 0d 0a 0d 0a 20  RNAME%.bat".... 
0b90: 20 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c     IF ERRORLEVEL
0ba0: 20 31 20 28 0d 0a 20 20 20 20 20 20 45 43 48 4f   1 (..      ECHO
0bb0: 20 46 69 6c 65 20 22 25 54 4f 4f 4c 53 25 5c 73   File "%TOOLS%\s
0bc0: 65 74 5f 75 73 65 72 5f 25 55 53 45 52 4e 41 4d  et_user_%USERNAM
0bd0: 45 25 2e 62 61 74 22 20 66 61 69 6c 65 64 2e 0d  E%.bat" failed..
0be0: 0a 20 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f  .      GOTO erro
0bf0: 72 73 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a  rs..    )..  )..
0c00: 29 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49  )....IF NOT DEFI
0c10: 4e 45 44 20 4d 53 42 55 49 4c 44 20 28 0d 0a 20  NED MSBUILD (.. 
0c20: 20 53 45 54 20 4d 53 42 55 49 4c 44 3d 4d 53 42   SET MSBUILD=MSB
0c30: 75 69 6c 64 2e 65 78 65 0d 0a 29 0d 0a 0d 0a 25  uild.exe..)....%
0c40: 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c 64 20  _VECHO% MsBuild 
0c50: 3d 20 27 25 4d 53 42 55 49 4c 44 25 27 0d 0a 0d  = '%MSBUILD%'...
0c60: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
0c70: 44 4f 54 4e 45 54 20 28 0d 0a 20 20 53 45 54 20  DOTNET (..  SET 
0c80: 44 4f 54 4e 45 54 3d 64 6f 74 6e 65 74 2e 65 78  DOTNET=dotnet.ex
0c90: 65 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25  e..)....%_VECHO%
0ca0: 20 44 6f 74 4e 65 74 20 3d 20 27 25 44 4f 54 4e   DotNet = '%DOTN
0cb0: 45 54 25 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44  ET%'....IF NOT D
0cc0: 45 46 49 4e 45 44 20 43 53 43 20 28 0d 0a 20 20  EFINED CSC (..  
0cd0: 53 45 54 20 43 53 43 3d 63 73 63 2e 65 78 65 0d  SET CSC=csc.exe.
0ce0: 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 43  .)....%_VECHO% C
0cf0: 73 63 20 3d 20 27 25 43 53 43 25 27 0d 0a 0d 0a  sc = '%CSC%'....
0d00: 52 45 4d 0d 0a 52 45 4d 20 54 4f 44 4f 3a 20 57  REM..REM TODO: W
0d10: 68 65 6e 20 74 68 65 20 6e 65 78 74 20 76 65 72  hen the next ver
0d20: 73 69 6f 6e 20 6f 66 20 56 69 73 75 61 6c 20 53  sion of Visual S
0d30: 74 75 64 69 6f 20 69 73 20 72 65 6c 65 61 73 65  tudio is release
0d40: 64 2c 20 74 68 69 73 20 73 65 63 74 69 6f 6e 0d  d, this section.
0d50: 0a 52 45 4d 20 20 20 20 20 20 20 6d 61 79 20 6e  .REM       may n
0d60: 65 65 64 20 75 70 64 61 74 69 6e 67 2e 0d 0a 52  eed updating...R
0d70: 45 4d 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e  EM..IF DEFINED N
0d80: 45 54 43 4f 52 45 32 30 4f 4e 4c 59 20 28 0d 0a  ETCORE20ONLY (..
0d90: 20 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69    %_AECHO% Forci
0da0: 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68  ng the use of th
0db0: 65 20 2e 4e 45 54 20 43 6f 72 65 20 32 2e 30 2e  e .NET Core 2.0.
0dc0: 2e 2e 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46  ....  IF NOT DEF
0dd0: 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20 20 20  INED YEAR (..   
0de0: 20 53 45 54 20 59 45 41 52 3d 4e 65 74 53 74 61   SET YEAR=NetSta
0df0: 6e 64 61 72 64 32 30 0d 0a 20 20 29 0d 0a 20 20  ndard20..  )..  
0e00: 43 41 4c 4c 20 3a 66 6e 5f 56 65 72 69 66 79 44  CALL :fn_VerifyD
0e10: 6f 74 4e 65 74 43 6f 72 65 0d 0a 20 20 49 46 20  otNetCore..  IF 
0e20: 45 52 52 4f 52 4c 45 56 45 4c 20 31 20 47 4f 54  ERRORLEVEL 1 GOT
0e30: 4f 20 65 72 72 6f 72 73 0d 0a 20 20 53 45 54 20  O errors..  SET 
0e40: 4e 4f 42 55 49 4c 44 54 4f 4f 4c 44 49 52 3d 31  NOBUILDTOOLDIR=1
0e50: 0d 0a 20 20 53 45 54 20 55 53 45 44 4f 54 4e 45  ..  SET USEDOTNE
0e60: 54 3d 31 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75  T=1..  GOTO setu
0e70: 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a  p_buildToolDir..
0e80: 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20  )....IF DEFINED 
0e90: 4e 45 54 46 58 32 30 4f 4e 4c 59 20 28 0d 0a 20  NETFX20ONLY (.. 
0ea0: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e   %_AECHO% Forcin
0eb0: 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  g the use of the
0ec0: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
0ed0: 32 2e 30 2e 2e 2e 0d 0a 20 20 53 45 54 20 59 45  2.0.....  SET YE
0ee0: 41 52 3d 32 30 30 35 0d 0a 20 20 43 41 4c 4c 20  AR=2005..  CALL 
0ef0: 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f  :fn_CheckFramewo
0f00: 72 6b 44 69 72 20 76 32 2e 30 2e 35 30 37 32 37  rkDir v2.0.50727
0f10: 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75 70 5f 62  ..  GOTO setup_b
0f20: 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29 0d 0a  uildToolDir..)..
0f30: 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e 45 54  ..IF DEFINED NET
0f40: 46 58 33 35 4f 4e 4c 59 20 28 0d 0a 20 20 25 5f  FX35ONLY (..  %_
0f50: 41 45 43 48 4f 25 20 46 6f 72 63 69 6e 67 20 74  AECHO% Forcing t
0f60: 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 2e 4e  he use of the .N
0f70: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 33 2e 35  ET Framework 3.5
0f80: 2e 2e 2e 0d 0a 20 20 53 45 54 20 59 45 41 52 3d  .....  SET YEAR=
0f90: 32 30 30 38 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  2008..  CALL :fn
0fa0: 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44  _CheckFrameworkD
0fb0: 69 72 20 76 33 2e 35 0d 0a 20 20 47 4f 54 4f 20  ir v3.5..  GOTO 
0fc0: 73 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f 6c 44  setup_buildToolD
0fd0: 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44 45 46 49  ir..)....IF DEFI
0fe0: 4e 45 44 20 4e 45 54 46 58 34 30 4f 4e 4c 59 20  NED NETFX40ONLY 
0ff0: 28 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 46 6f  (..  %_AECHO% Fo
1000: 72 63 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66  rcing the use of
1010: 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
1020: 6f 72 6b 20 34 2e 30 2e 2e 2e 0d 0a 20 20 53 45  ork 4.0.....  SE
1030: 54 20 59 45 41 52 3d 32 30 31 30 0d 0a 20 20 43  T YEAR=2010..  C
1040: 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61  ALL :fn_CheckFra
1050: 6d 65 77 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33  meworkDir v4.0.3
1060: 30 33 31 39 0d 0a 20 20 47 4f 54 4f 20 73 65 74  0319..  GOTO set
1070: 75 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d  up_buildToolDir.
1080: 0a 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44  .)....IF DEFINED
1090: 20 4e 45 54 46 58 34 35 4f 4e 4c 59 20 28 0d 0a   NETFX45ONLY (..
10a0: 20 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69    %_AECHO% Forci
10b0: 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68  ng the use of th
10c0: 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
10d0: 20 34 2e 35 2e 2e 2e 0d 0a 20 20 53 45 54 20 59   4.5.....  SET Y
10e0: 45 41 52 3d 32 30 31 32 0d 0a 20 20 43 41 4c 4c  EAR=2012..  CALL
10f0: 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77   :fn_CheckFramew
1100: 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31  orkDir v4.0.3031
1110: 39 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75 70 5f  9..  GOTO setup_
1120: 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29 0d  buildToolDir..).
1130: 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e 45  ...IF DEFINED NE
1140: 54 46 58 34 35 31 4f 4e 4c 59 20 28 0d 0a 20 20  TFX451ONLY (..  
1150: 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e 67  %_AECHO% Forcing
1160: 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20   the use of the 
1170: 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 34  .NET Framework 4
1180: 2e 35 2e 31 2e 2e 2e 0d 0a 20 20 53 45 54 20 59  .5.1.....  SET Y
1190: 45 41 52 3d 32 30 31 33 0d 0a 20 20 43 41 4c 4c  EAR=2013..  CALL
11a0: 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77   :fn_CheckFramew
11b0: 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31  orkDir v4.0.3031
11c0: 39 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68  9..  CALL :fn_Ch
11d0: 65 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31 32  eckMsBuildDir 12
11e0: 2e 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75 70  .0..  GOTO setup
11f0: 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29  _buildToolDir..)
1200: 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e  ....IF DEFINED N
1210: 45 54 46 58 34 35 32 4f 4e 4c 59 20 28 0d 0a 20  ETFX452ONLY (.. 
1220: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e   %_AECHO% Forcin
1230: 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  g the use of the
1240: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
1250: 34 2e 35 2e 32 2e 2e 2e 0d 0a 20 20 53 45 54 20  4.5.2.....  SET 
1260: 59 45 41 52 3d 32 30 31 33 0d 0a 20 20 43 41 4c  YEAR=2013..  CAL
1270: 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65  L :fn_CheckFrame
1280: 77 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33  workDir v4.0.303
1290: 31 39 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43  19..  CALL :fn_C
12a0: 68 65 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31  heckMsBuildDir 1
12b0: 32 2e 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75  2.0..  GOTO setu
12c0: 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a  p_buildToolDir..
12d0: 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20  )....IF DEFINED 
12e0: 4e 45 54 46 58 34 36 4f 4e 4c 59 20 28 0d 0a 20  NETFX46ONLY (.. 
12f0: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e   %_AECHO% Forcin
1300: 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  g the use of the
1310: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
1320: 34 2e 36 2e 2e 2e 0d 0a 20 20 53 45 54 20 59 45  4.6.....  SET YE
1330: 41 52 3d 32 30 31 35 0d 0a 20 20 43 41 4c 4c 20  AR=2015..  CALL 
1340: 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f  :fn_CheckFramewo
1350: 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31 39  rkDir v4.0.30319
1360: 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65  ..  CALL :fn_Che
1370: 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31 34 2e  ckMsBuildDir 14.
1380: 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75 70 5f  0..  GOTO setup_
1390: 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29 0d  buildToolDir..).
13a0: 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e 45  ...IF DEFINED NE
13b0: 54 46 58 34 36 31 4f 4e 4c 59 20 28 0d 0a 20 20  TFX461ONLY (..  
13c0: 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e 67  %_AECHO% Forcing
13d0: 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65 20   the use of the 
13e0: 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 34  .NET Framework 4
13f0: 2e 36 2e 31 2e 2e 2e 0d 0a 20 20 53 45 54 20 59  .6.1.....  SET Y
1400: 45 41 52 3d 32 30 31 35 0d 0a 20 20 43 41 4c 4c  EAR=2015..  CALL
1410: 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77   :fn_CheckFramew
1420: 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31  orkDir v4.0.3031
1430: 39 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68  9..  CALL :fn_Ch
1440: 65 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31 34  eckMsBuildDir 14
1450: 2e 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75 70  .0..  GOTO setup
1460: 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29  _buildToolDir..)
1470: 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e  ....IF DEFINED N
1480: 45 54 46 58 34 36 32 4f 4e 4c 59 20 28 0d 0a 20  ETFX462ONLY (.. 
1490: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e   %_AECHO% Forcin
14a0: 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  g the use of the
14b0: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
14c0: 34 2e 36 2e 32 2e 2e 2e 0d 0a 20 20 53 45 54 20  4.6.2.....  SET 
14d0: 59 45 41 52 3d 32 30 31 35 0d 0a 20 20 43 41 4c  YEAR=2015..  CAL
14e0: 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65  L :fn_CheckFrame
14f0: 77 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33  workDir v4.0.303
1500: 31 39 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43  19..  CALL :fn_C
1510: 68 65 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31  heckMsBuildDir 1
1520: 34 2e 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75  4.0..  GOTO setu
1530: 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a  p_buildToolDir..
1540: 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20  )....IF DEFINED 
1550: 4e 45 54 46 58 34 37 4f 4e 4c 59 20 28 0d 0a 20  NETFX47ONLY (.. 
1560: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e   %_AECHO% Forcin
1570: 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68 65  g the use of the
1580: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
1590: 34 2e 37 2e 2e 2e 0d 0a 20 20 53 45 54 20 59 45  4.7.....  SET YE
15a0: 41 52 3d 32 30 31 37 0d 0a 20 20 43 41 4c 4c 20  AR=2017..  CALL 
15b0: 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f  :fn_CheckFramewo
15c0: 72 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31 39  rkDir v4.0.30319
15d0: 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65  ..  CALL :fn_Che
15e0: 63 6b 4d 73 42 75 69 6c 64 44 69 72 20 31 34 2e  ckMsBuildDir 14.
15f0: 30 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68  0..  CALL :fn_Ch
1600: 65 63 6b 56 69 73 75 61 6c 53 74 75 64 69 6f 4d  eckVisualStudioM
1610: 73 42 75 69 6c 64 44 69 72 20 31 35 2e 30 20 31  sBuildDir 15.0 1
1620: 35 2e 30 0d 0a 20 20 47 4f 54 4f 20 73 65 74 75  5.0..  GOTO setu
1630: 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a  p_buildToolDir..
1640: 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e 45 44 20  )....IF DEFINED 
1650: 4e 45 54 46 58 34 37 31 4f 4e 4c 59 20 28 0d 0a  NETFX471ONLY (..
1660: 20 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69    %_AECHO% Forci
1670: 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20 74 68  ng the use of th
1680: 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
1690: 20 34 2e 37 2e 31 2e 2e 2e 0d 0a 20 20 53 45 54   4.7.1.....  SET
16a0: 20 59 45 41 52 3d 32 30 31 37 0d 0a 20 20 43 41   YEAR=2017..  CA
16b0: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d  LL :fn_CheckFram
16c0: 65 77 6f 72 6b 44 69 72 20 76 34 2e 30 2e 33 30  eworkDir v4.0.30
16d0: 33 31 39 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f  319..  CALL :fn_
16e0: 43 68 65 63 6b 4d 73 42 75 69 6c 64 44 69 72 20  CheckMsBuildDir 
16f0: 31 34 2e 30 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  14.0..  CALL :fn
1700: 5f 43 68 65 63 6b 56 69 73 75 61 6c 53 74 75 64  _CheckVisualStud
1710: 69 6f 4d 73 42 75 69 6c 64 44 69 72 20 31 35 2e  ioMsBuildDir 15.
1720: 30 20 31 35 2e 30 0d 0a 20 20 47 4f 54 4f 20 73  0 15.0..  GOTO s
1730: 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f 6c 44 69  etup_buildToolDi
1740: 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44 45 46 49 4e  r..)....IF DEFIN
1750: 45 44 20 4e 45 54 46 58 34 37 32 4f 4e 4c 59 20  ED NETFX472ONLY 
1760: 28 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 46 6f  (..  %_AECHO% Fo
1770: 72 63 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66  rcing the use of
1780: 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
1790: 6f 72 6b 20 34 2e 37 2e 32 2e 2e 2e 0d 0a 20 20  ork 4.7.2.....  
17a0: 53 45 54 20 59 45 41 52 3d 32 30 31 37 0d 0a 20  SET YEAR=2017.. 
17b0: 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46   CALL :fn_CheckF
17c0: 72 61 6d 65 77 6f 72 6b 44 69 72 20 76 34 2e 30  rameworkDir v4.0
17d0: 2e 33 30 33 31 39 0d 0a 20 20 43 41 4c 4c 20 3a  .30319..  CALL :
17e0: 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69 6c 64 44  fn_CheckMsBuildD
17f0: 69 72 20 31 34 2e 30 0d 0a 20 20 43 41 4c 4c 20  ir 14.0..  CALL 
1800: 3a 66 6e 5f 43 68 65 63 6b 56 69 73 75 61 6c 53  :fn_CheckVisualS
1810: 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69 72 20  tudioMsBuildDir 
1820: 31 35 2e 30 20 31 35 2e 30 0d 0a 20 20 47 4f 54  15.0 15.0..  GOT
1830: 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f  O setup_buildToo
1840: 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 52 45 4d 0d 0a  lDir..)....REM..
1850: 52 45 4d 20 54 4f 44 4f 3a 20 57 68 65 6e 20 74  REM TODO: When t
1860: 68 65 20 6e 65 78 74 20 76 65 72 73 69 6f 6e 20  he next version 
1870: 6f 66 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f  of Visual Studio
1880: 20 61 6e 64 2f 6f 72 20 4d 53 42 75 69 6c 64 20   and/or MSBuild 
1890: 69 73 20 72 65 6c 65 61 73 65 64 2c 0d 0a 52 45  is released,..RE
18a0: 4d 20 20 20 20 20 20 20 74 68 69 73 20 73 65 63  M       this sec
18b0: 74 69 6f 6e 20 6d 61 79 20 6e 65 65 64 20 75 70  tion may need up
18c0: 64 61 74 69 6e 67 2e 0d 0a 52 45 4d 0d 0a 49 46  dating...REM..IF
18d0: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 56 49 53   NOT DEFINED VIS
18e0: 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44  UALSTUDIOMSBUILD
18f0: 44 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a 66  DIR (..  CALL :f
1900: 6e 5f 43 68 65 63 6b 56 69 73 75 61 6c 53 74 75  n_CheckVisualStu
1910: 64 69 6f 4d 73 42 75 69 6c 64 44 69 72 20 31 35  dioMsBuildDir 15
1920: 2e 30 20 31 35 2e 30 0d 0a 20 20 49 46 20 44 45  .0 15.0..  IF DE
1930: 46 49 4e 45 44 20 56 49 53 55 41 4c 53 54 55 44  FINED VISUALSTUD
1940: 49 4f 4d 53 42 55 49 4c 44 44 49 52 20 28 0d 0a  IOMSBUILDDIR (..
1950: 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e      IF NOT DEFIN
1960: 45 44 20 59 45 41 52 20 28 0d 0a 20 20 20 20 20  ED YEAR (..     
1970: 20 53 45 54 20 59 45 41 52 3d 32 30 31 37 0d 0a   SET YEAR=2017..
1980: 20 20 20 20 29 0d 0a 20 20 29 0d 0a 29 0d 0a 0d      )..  )..)...
1990: 0a 52 45 4d 0d 0a 52 45 4d 20 54 4f 44 4f 3a 20  .REM..REM TODO: 
19a0: 57 68 65 6e 20 74 68 65 20 6e 65 78 74 20 76 65  When the next ve
19b0: 72 73 69 6f 6e 20 6f 66 20 4d 53 42 75 69 6c 64  rsion of MSBuild
19c0: 20 69 73 20 72 65 6c 65 61 73 65 64 2c 20 74 68   is released, th
19d0: 69 73 20 73 65 63 74 69 6f 6e 20 6d 61 79 20 6e  is section may n
19e0: 65 65 64 0d 0a 52 45 4d 20 20 20 20 20 20 20 75  eed..REM       u
19f0: 70 64 61 74 69 6e 67 2e 0d 0a 52 45 4d 0d 0a 49  pdating...REM..I
1a00: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4d 53  F NOT DEFINED MS
1a10: 42 55 49 4c 44 44 49 52 20 28 0d 0a 20 20 43 41  BUILDDIR (..  CA
1a20: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75  LL :fn_CheckMsBu
1a30: 69 6c 64 44 69 72 20 31 34 2e 30 0d 0a 20 20 49  ildDir 14.0..  I
1a40: 46 20 44 45 46 49 4e 45 44 20 4d 53 42 55 49 4c  F DEFINED MSBUIL
1a50: 44 44 49 52 20 28 0d 0a 20 20 20 20 49 46 20 4e  DDIR (..    IF N
1a60: 4f 54 20 44 45 46 49 4e 45 44 20 59 45 41 52 20  OT DEFINED YEAR 
1a70: 28 0d 0a 20 20 20 20 20 20 53 45 54 20 59 45 41  (..      SET YEA
1a80: 52 3d 32 30 31 35 0d 0a 20 20 20 20 29 0d 0a 20  R=2015..    ).. 
1a90: 20 29 0d 0a 29 0d 0a 0d 0a 49 46 20 4e 4f 54 20   )..)....IF NOT 
1aa0: 44 45 46 49 4e 45 44 20 4d 53 42 55 49 4c 44 44  DEFINED MSBUILDD
1ab0: 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  IR (..  CALL :fn
1ac0: 5f 43 68 65 63 6b 4d 73 42 75 69 6c 64 44 69 72  _CheckMsBuildDir
1ad0: 20 31 32 2e 30 0d 0a 20 20 49 46 20 44 45 46 49   12.0..  IF DEFI
1ae0: 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52 20 28  NED MSBUILDDIR (
1af0: 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46  ..    IF NOT DEF
1b00: 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20 20 20  INED YEAR (..   
1b10: 20 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 33     SET YEAR=2013
1b20: 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a 29 0d  ..    )..  )..).
1b30: 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 54 4f 44 4f  ...REM..REM TODO
1b40: 3a 20 57 68 65 6e 20 74 68 65 20 6e 65 78 74 20  : When the next 
1b50: 76 65 72 73 69 6f 6e 20 6f 66 20 56 69 73 75 61  version of Visua
1b60: 6c 20 53 74 75 64 69 6f 20 69 73 20 72 65 6c 65  l Studio is rele
1b70: 61 73 65 64 2c 20 74 68 69 73 20 73 65 63 74 69  ased, this secti
1b80: 6f 6e 0d 0a 52 45 4d 20 20 20 20 20 20 20 6d 61  on..REM       ma
1b90: 79 20 6e 65 65 64 20 75 70 64 61 74 69 6e 67 2e  y need updating.
1ba0: 0d 0a 52 45 4d 0d 0a 49 46 20 4e 4f 54 20 44 45  ..REM..IF NOT DE
1bb0: 46 49 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b 44  FINED FRAMEWORKD
1bc0: 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  IR (..  CALL :fn
1bd0: 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44  _CheckFrameworkD
1be0: 69 72 20 76 34 2e 30 2e 33 30 33 31 39 0d 0a 20  ir v4.0.30319.. 
1bf0: 20 49 46 20 44 45 46 49 4e 45 44 20 46 52 41 4d   IF DEFINED FRAM
1c00: 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20 20 20  EWORKDIR (..    
1c10: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 59  IF NOT DEFINED Y
1c20: 45 41 52 20 28 0d 0a 20 20 20 20 20 20 53 45 54  EAR (..      SET
1c30: 20 59 45 41 52 3d 32 30 31 30 0d 0a 20 20 20 20   YEAR=2010..    
1c40: 29 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 49 46 20  )..  )..)....IF 
1c50: 4e 4f 54 20 44 45 46 49 4e 45 44 20 46 52 41 4d  NOT DEFINED FRAM
1c60: 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20 43 41  EWORKDIR (..  CA
1c70: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d  LL :fn_CheckFram
1c80: 65 77 6f 72 6b 44 69 72 20 76 33 2e 35 0d 0a 20  eworkDir v3.5.. 
1c90: 20 49 46 20 44 45 46 49 4e 45 44 20 46 52 41 4d   IF DEFINED FRAM
1ca0: 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20 20 20  EWORKDIR (..    
1cb0: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 59  IF NOT DEFINED Y
1cc0: 45 41 52 20 28 0d 0a 20 20 20 20 20 20 53 45 54  EAR (..      SET
1cd0: 20 59 45 41 52 3d 32 30 30 38 0d 0a 20 20 20 20   YEAR=2008..    
1ce0: 29 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 49 46 20  )..  )..)....IF 
1cf0: 4e 4f 54 20 44 45 46 49 4e 45 44 20 46 52 41 4d  NOT DEFINED FRAM
1d00: 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20 43 41  EWORKDIR (..  CA
1d10: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72 61 6d  LL :fn_CheckFram
1d20: 65 77 6f 72 6b 44 69 72 20 76 32 2e 30 2e 35 30  eworkDir v2.0.50
1d30: 37 32 37 0d 0a 20 20 49 46 20 44 45 46 49 4e 45  727..  IF DEFINE
1d40: 44 20 46 52 41 4d 45 57 4f 52 4b 44 49 52 20 28  D FRAMEWORKDIR (
1d50: 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46  ..    IF NOT DEF
1d60: 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20 20 20  INED YEAR (..   
1d70: 20 20 20 53 45 54 20 59 45 41 52 3d 32 30 30 35     SET YEAR=2005
1d80: 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a 29 0d  ..    )..  )..).
1d90: 0a 0d 0a 3a 73 65 74 75 70 5f 62 75 69 6c 64 54  ...:setup_buildT
1da0: 6f 6f 6c 44 69 72 0d 0a 0d 0a 25 5f 56 45 43 48  oolDir....%_VECH
1db0: 4f 25 20 4e 6f 42 75 69 6c 64 54 6f 6f 6c 44 69  O% NoBuildToolDi
1dc0: 72 20 3d 20 27 25 4e 4f 42 55 49 4c 44 54 4f 4f  r = '%NOBUILDTOO
1dd0: 4c 44 49 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25  LDIR%'..%_VECHO%
1de0: 20 55 73 65 44 6f 74 4e 65 74 20 3d 20 27 25 55   UseDotNet = '%U
1df0: 53 45 44 4f 54 4e 45 54 25 27 0d 0a 0d 0a 49 46  SEDOTNET%'....IF
1e00: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4e 4f 42   NOT DEFINED NOB
1e10: 55 49 4c 44 54 4f 4f 4c 44 49 52 20 28 0d 0a 20  UILDTOOLDIR (.. 
1e20: 20 49 46 20 44 45 46 49 4e 45 44 20 42 55 49 4c   IF DEFINED BUIL
1e30: 44 54 4f 4f 4c 44 49 52 20 28 0d 0a 20 20 20 20  DTOOLDIR (..    
1e40: 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 69 6e 67  %_AECHO% Forcing
1e50: 20 74 68 65 20 75 73 65 20 6f 66 20 62 75 69 6c   the use of buil
1e60: 64 20 74 6f 6f 6c 20 64 69 72 65 63 74 6f 72 79  d tool directory
1e70: 20 22 25 42 55 49 4c 44 54 4f 4f 4c 44 49 52 25   "%BUILDTOOLDIR%
1e80: 22 2e 2e 2e 0d 0a 20 20 29 20 45 4c 53 45 20 28  ".....  ) ELSE (
1e90: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 43  ..    CALL :fn_C
1ea0: 68 65 63 6b 42 75 69 6c 64 54 6f 6f 6c 44 69 72  heckBuildToolDir
1eb0: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 56  ..    CALL :fn_V
1ec0: 65 72 69 66 79 42 75 69 6c 64 54 6f 6f 6c 44 69  erifyBuildToolDi
1ed0: 72 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 25 5f 56  r..  )..)....%_V
1ee0: 45 43 48 4f 25 20 59 65 61 72 20 3d 20 27 25 59  ECHO% Year = '%Y
1ef0: 45 41 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20  EAR%'..%_VECHO% 
1f00: 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 3d 20 27  FrameworkDir = '
1f10: 25 46 52 41 4d 45 57 4f 52 4b 44 49 52 25 27 0d  %FRAMEWORKDIR%'.
1f20: 0a 25 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c  .%_VECHO% MsBuil
1f30: 64 44 69 72 20 3d 20 27 25 4d 53 42 55 49 4c 44  dDir = '%MSBUILD
1f40: 44 49 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20  DIR%'..%_VECHO% 
1f50: 56 69 73 75 61 6c 53 74 75 64 69 6f 4d 73 42 75  VisualStudioMsBu
1f60: 69 6c 64 44 69 72 20 3d 20 27 25 56 49 53 55 41  ildDir = '%VISUA
1f70: 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49  LSTUDIOMSBUILDDI
1f80: 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20 42 75  R%'..%_VECHO% Bu
1f90: 69 6c 64 54 6f 6f 6c 44 69 72 20 3d 20 27 25 42  ildToolDir = '%B
1fa0: 55 49 4c 44 54 4f 4f 4c 44 49 52 25 27 0d 0a 0d  UILDTOOLDIR%'...
1fb0: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
1fc0: 4e 4f 42 55 49 4c 44 54 4f 4f 4c 44 49 52 20 28  NOBUILDTOOLDIR (
1fd0: 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e  ..  IF NOT DEFIN
1fe0: 45 44 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 20  ED BUILDTOOLDIR 
1ff0: 28 0d 0a 20 20 20 20 45 43 48 4f 2e 0d 0a 20 20  (..    ECHO...  
2000: 20 20 45 43 48 4f 20 4e 6f 20 64 69 72 65 63 74    ECHO No direct
2010: 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 4d  ory containing M
2020: 53 42 75 69 6c 64 20 63 6f 75 6c 64 20 62 65 20  SBuild could be 
2030: 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 45 43 48 4f  found...    ECHO
2040: 2e 0d 0a 20 20 20 20 45 43 48 4f 20 50 6c 65 61  ...    ECHO Plea
2050: 73 65 20 69 6e 73 74 61 6c 6c 20 74 68 65 20 2e  se install the .
2060: 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 6f 72  NET Framework or
2070: 20 73 65 74 20 74 68 65 20 22 46 52 41 4d 45 57   set the "FRAMEW
2080: 4f 52 4b 44 49 52 22 0d 0a 20 20 20 20 45 43 48  ORKDIR"..    ECH
2090: 4f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61  O environment va
20a0: 72 69 61 62 6c 65 20 74 6f 20 74 68 65 20 6c 6f  riable to the lo
20b0: 63 61 74 69 6f 6e 20 77 68 65 72 65 20 69 74 20  cation where it 
20c0: 69 73 20 69 6e 73 74 61 6c 6c 65 64 2e 0d 0a 20  is installed... 
20d0: 20 20 20 45 43 48 4f 2e 0d 0a 20 20 20 20 47 4f     ECHO...    GO
20e0: 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 29 0d 0a  TO errors..  )..
20f0: 29 0d 0a 0d 0a 43 41 4c 4c 20 3a 66 6e 5f 52 65  )....CALL :fn_Re
2100: 73 65 74 45 72 72 6f 72 4c 65 76 65 6c 0d 0a 0d  setErrorLevel...
2110: 0a 25 5f 5f 45 43 48 4f 32 25 20 50 55 53 48 44  .%__ECHO2% PUSHD
2120: 20 22 25 52 4f 4f 54 25 22 0d 0a 0d 0a 49 46 20   "%ROOT%"....IF 
2130: 45 52 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a  ERRORLEVEL 1 (..
2140: 20 20 45 43 48 4f 20 43 6f 75 6c 64 20 6e 6f 74    ECHO Could not
2150: 20 63 68 61 6e 67 65 20 64 69 72 65 63 74 6f 72   change director
2160: 79 20 74 6f 20 22 25 52 4f 4f 54 25 22 2e 0d 0a  y to "%ROOT%"...
2170: 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 29    GOTO errors..)
2180: 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e  ....IF NOT DEFIN
2190: 45 44 20 4e 4f 42 55 49 4c 44 54 4f 4f 4c 44 49  ED NOBUILDTOOLDI
21a0: 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f  R (..  CALL :fn_
21b0: 50 72 65 70 65 6e 64 54 6f 50 61 74 68 20 42 55  PrependToPath BU
21c0: 49 4c 44 54 4f 4f 4c 44 49 52 0d 0a 29 0d 0a 0d  ILDTOOLDIR..)...
21d0: 0a 25 5f 56 45 43 48 4f 25 20 50 61 74 68 20 3d  .%_VECHO% Path =
21e0: 20 27 25 50 41 54 48 25 27 0d 0a 0d 0a 49 46 20   '%PATH%'....IF 
21f0: 4e 4f 54 20 44 45 46 49 4e 45 44 20 53 4f 4c 55  NOT DEFINED SOLU
2200: 54 49 4f 4e 20 28 0d 0a 20 20 49 46 20 44 45 46  TION (..  IF DEF
2210: 49 4e 45 44 20 43 4f 52 45 4f 4e 4c 59 20 28 0d  INED COREONLY (.
2220: 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 42 75  .    %_AECHO% Bu
2230: 69 6c 64 69 6e 67 20 63 6f 72 65 20 6d 61 6e 61  ilding core mana
2240: 67 65 64 20 70 72 6f 6a 65 63 74 2e 2e 2e 0d 0a  ged project.....
2250: 20 20 20 20 53 45 54 20 53 4f 4c 55 54 49 4f 4e      SET SOLUTION
2260: 3d 2e 5c 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  =.\System.Data.S
2270: 51 4c 69 74 65 5c 53 79 73 74 65 6d 2e 44 61 74  QLite\System.Dat
2280: 61 2e 53 51 4c 69 74 65 2e 25 59 45 41 52 25 2e  a.SQLite.%YEAR%.
2290: 63 73 70 72 6f 6a 0d 0a 20 20 29 0d 0a 29 0d 0a  csproj..  )..)..
22a0: 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44  ..IF NOT DEFINED
22b0: 20 53 4f 4c 55 54 49 4f 4e 20 28 0d 0a 20 20 49   SOLUTION (..  I
22c0: 46 20 44 45 46 49 4e 45 44 20 49 4e 54 45 52 4f  F DEFINED INTERO
22d0: 50 4f 4e 4c 59 20 28 0d 0a 20 20 20 20 49 46 20  PONLY (..    IF 
22e0: 44 45 46 49 4e 45 44 20 53 54 41 54 49 43 4f 4e  DEFINED STATICON
22f0: 4c 59 20 28 0d 0a 20 20 20 20 20 20 25 5f 41 45  LY (..      %_AE
2300: 43 48 4f 25 20 42 75 69 6c 64 69 6e 67 20 73 74  CHO% Building st
2310: 61 74 69 63 20 63 6f 72 65 20 69 6e 74 65 72 6f  atic core intero
2320: 70 20 70 72 6f 6a 65 63 74 2e 2e 2e 0d 0a 20 20  p project.....  
2330: 20 20 20 20 46 4f 52 20 2f 46 20 22 64 65 6c 69      FOR /F "deli
2340: 6d 73 3d 22 20 25 25 46 20 49 4e 20 28 27 44 49  ms=" %%F IN ('DI
2350: 52 20 2f 42 20 2f 53 20 22 2e 5c 53 51 4c 69 74  R /B /S ".\SQLit
2360: 65 2e 49 6e 74 65 72 6f 70 5c 53 51 4c 69 74 65  e.Interop\SQLite
2370: 2e 49 6e 74 65 72 6f 70 2e 53 74 61 74 69 63 2e  .Interop.Static.
2380: 25 59 45 41 52 25 2e 76 63 3f 70 72 6f 6a 22 20  %YEAR%.vc?proj" 
2390: 32 5e 3e 20 4e 55 4c 27 29 20 44 4f 20 28 0d 0a  2^> NUL') DO (..
23a0: 20 20 20 20 20 20 20 20 53 45 54 20 53 4f 4c 55          SET SOLU
23b0: 54 49 4f 4e 3d 25 25 46 0d 0a 20 20 20 20 20 20  TION=%%F..      
23c0: 29 0d 0a 20 20 20 20 20 20 49 46 20 4e 4f 54 20  )..      IF NOT 
23d0: 44 45 46 49 4e 45 44 20 53 4f 4c 55 54 49 4f 4e  DEFINED SOLUTION
23e0: 20 28 0d 0a 20 20 20 20 20 20 20 20 45 43 48 4f   (..        ECHO
23f0: 20 43 6f 75 6c 64 20 6e 6f 74 20 6c 6f 63 61 74   Could not locat
2400: 65 20 73 74 61 74 69 63 20 63 6f 72 65 20 69 6e  e static core in
2410: 74 65 72 6f 70 20 70 72 6f 6a 65 63 74 20 66 6f  terop project fo
2420: 72 20 25 59 45 41 52 25 2e 0d 0a 20 20 20 20 20  r %YEAR%...     
2430: 20 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a     GOTO errors..
2440: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 29 20 45        )..    ) E
2450: 4c 53 45 20 28 0d 0a 20 20 20 20 20 20 25 5f 41  LSE (..      %_A
2460: 45 43 48 4f 25 20 42 75 69 6c 64 69 6e 67 20 6e  ECHO% Building n
2470: 6f 72 6d 61 6c 20 63 6f 72 65 20 69 6e 74 65 72  ormal core inter
2480: 6f 70 20 70 72 6f 6a 65 63 74 2e 2e 2e 0d 0a 20  op project..... 
2490: 20 20 20 20 20 46 4f 52 20 2f 46 20 22 64 65 6c       FOR /F "del
24a0: 69 6d 73 3d 22 20 25 25 46 20 49 4e 20 28 27 44  ims=" %%F IN ('D
24b0: 49 52 20 2f 42 20 2f 53 20 22 2e 5c 53 51 4c 69  IR /B /S ".\SQLi
24c0: 74 65 2e 49 6e 74 65 72 6f 70 5c 53 51 4c 69 74  te.Interop\SQLit
24d0: 65 2e 49 6e 74 65 72 6f 70 2e 25 59 45 41 52 25  e.Interop.%YEAR%
24e0: 2e 76 63 3f 70 72 6f 6a 22 20 32 5e 3e 20 4e 55  .vc?proj" 2^> NU
24f0: 4c 27 29 20 44 4f 20 28 0d 0a 20 20 20 20 20 20  L') DO (..      
2500: 20 20 53 45 54 20 53 4f 4c 55 54 49 4f 4e 3d 25    SET SOLUTION=%
2510: 25 46 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20  %F..      )..   
2520: 20 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45     IF NOT DEFINE
2530: 44 20 53 4f 4c 55 54 49 4f 4e 20 28 0d 0a 20 20  D SOLUTION (..  
2540: 20 20 20 20 20 20 45 43 48 4f 20 43 6f 75 6c 64        ECHO Could
2550: 20 6e 6f 74 20 6c 6f 63 61 74 65 20 6e 6f 72 6d   not locate norm
2560: 61 6c 20 63 6f 72 65 20 69 6e 74 65 72 6f 70 20  al core interop 
2570: 70 72 6f 6a 65 63 74 20 66 6f 72 20 25 59 45 41  project for %YEA
2580: 52 25 2e 0d 0a 20 20 20 20 20 20 20 20 47 4f 54  R%...        GOT
2590: 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20 20 20  O errors..      
25a0: 29 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a 29  )..    )..  )..)
25b0: 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e  ....IF NOT DEFIN
25c0: 45 44 20 53 4f 4c 55 54 49 4f 4e 20 28 0d 0a 20  ED SOLUTION (.. 
25d0: 20 49 46 20 44 45 46 49 4e 45 44 20 42 55 49 4c   IF DEFINED BUIL
25e0: 44 5f 46 55 4c 4c 20 28 0d 0a 20 20 20 20 25 5f  D_FULL (..    %_
25f0: 41 45 43 48 4f 25 20 42 75 69 6c 64 69 6e 67 20  AECHO% Building 
2600: 61 6c 6c 20 70 72 6f 6a 65 63 74 73 2e 2e 2e 0d  all projects....
2610: 0a 20 20 20 20 53 45 54 20 53 4f 4c 55 54 49 4f  .    SET SOLUTIO
2620: 4e 3d 2e 5c 53 51 4c 69 74 65 2e 4e 45 54 2e 25  N=.\SQLite.NET.%
2630: 59 45 41 52 25 2e 73 6c 6e 0d 0a 20 20 29 20 45  YEAR%.sln..  ) E
2640: 4c 53 45 20 28 0d 0a 20 20 20 20 25 5f 41 45 43  LSE (..    %_AEC
2650: 48 4f 25 20 42 75 69 6c 64 69 6e 67 20 61 6c 6c  HO% Building all
2660: 20 70 72 6f 6a 65 63 74 73 2e 2e 2e 0d 0a 20 20   projects.....  
2670: 20 20 53 45 54 20 53 4f 4c 55 54 49 4f 4e 3d 2e    SET SOLUTION=.
2680: 5c 53 51 4c 69 74 65 2e 4e 45 54 2e 25 59 45 41  \SQLite.NET.%YEA
2690: 52 25 2e 4d 53 42 75 69 6c 64 2e 73 6c 6e 0d 0a  R%.MSBuild.sln..
26a0: 20 20 29 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48    )..)....%_VECH
26b0: 4f 25 20 53 6f 6c 75 74 69 6f 6e 20 3d 20 27 25  O% Solution = '%
26c0: 53 4f 4c 55 54 49 4f 4e 25 27 0d 0a 0d 0a 49 46  SOLUTION%'....IF
26d0: 20 4e 4f 54 20 45 58 49 53 54 20 22 25 53 4f 4c   NOT EXIST "%SOL
26e0: 55 54 49 4f 4e 25 22 20 28 0d 0a 20 20 45 43 48  UTION%" (..  ECH
26f0: 4f 20 53 6f 6c 75 74 69 6f 6e 20 66 69 6c 65 20  O Solution file 
2700: 22 25 53 4f 4c 55 54 49 4f 4e 25 22 20 64 6f 65  "%SOLUTION%" doe
2710: 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a 20 20  s not exist...  
2720: 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 29 0d 0a  GOTO errors..)..
2730: 0d 0a 46 4f 52 20 2f 46 20 25 25 45 20 49 4e 20  ..FOR /F %%E IN 
2740: 28 27 45 43 48 4f 20 25 53 4f 4c 55 54 49 4f 4e  ('ECHO %SOLUTION
2750: 25 27 29 20 44 4f 20 28 53 45 54 20 53 4f 4c 55  %') DO (SET SOLU
2760: 54 49 4f 4e 45 58 54 3d 25 25 7e 78 45 29 0d 0a  TIONEXT=%%~xE)..
2770: 0d 0a 25 5f 56 45 43 48 4f 25 20 53 6f 6c 75 74  ..%_VECHO% Solut
2780: 69 6f 6e 45 78 74 20 3d 20 27 25 53 4f 4c 55 54  ionExt = '%SOLUT
2790: 49 4f 4e 45 58 54 25 27 0d 0a 0d 0a 49 46 20 2f  IONEXT%'....IF /
27a0: 49 20 22 25 53 4f 4c 55 54 49 4f 4e 45 58 54 25  I "%SOLUTIONEXT%
27b0: 22 20 3d 3d 20 22 2e 63 73 70 72 6f 6a 22 20 28  " == ".csproj" (
27c0: 0d 0a 20 20 53 45 54 20 4d 53 42 55 49 4c 44 5f  ..  SET MSBUILD_
27d0: 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 3d 25 42  CONFIGURATION=%B
27e0: 41 53 45 5f 43 4f 4e 46 49 47 55 52 41 54 49 4f  ASE_CONFIGURATIO
27f0: 4e 25 0d 0a 29 20 45 4c 53 45 20 28 0d 0a 20 20  N%..) ELSE (..  
2800: 53 45 54 20 4d 53 42 55 49 4c 44 5f 43 4f 4e 46  SET MSBUILD_CONF
2810: 49 47 55 52 41 54 49 4f 4e 3d 25 43 4f 4e 46 49  IGURATION=%CONFI
2820: 47 55 52 41 54 49 4f 4e 25 0d 0a 29 0d 0a 0d 0a  GURATION%..)....
2830: 25 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c 64  %_VECHO% MsBuild
2840: 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 20  Configuration = 
2850: 27 25 4d 53 42 55 49 4c 44 5f 43 4f 4e 46 49 47  '%MSBUILD_CONFIG
2860: 55 52 41 54 49 4f 4e 25 27 0d 0a 0d 0a 49 46 20  URATION%'....IF 
2870: 4e 4f 54 20 44 45 46 49 4e 45 44 20 54 41 52 47  NOT DEFINED TARG
2880: 45 54 20 28 0d 0a 20 20 53 45 54 20 54 41 52 47  ET (..  SET TARG
2890: 45 54 3d 52 65 62 75 69 6c 64 0d 0a 29 0d 0a 0d  ET=Rebuild..)...
28a0: 0a 25 5f 56 45 43 48 4f 25 20 54 61 72 67 65 74  .%_VECHO% Target
28b0: 20 3d 20 27 25 54 41 52 47 45 54 25 27 0d 0a 0d   = '%TARGET%'...
28c0: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
28d0: 54 45 4d 50 20 28 0d 0a 20 20 45 43 48 4f 20 54  TEMP (..  ECHO T
28e0: 65 6d 70 6f 72 61 72 79 20 64 69 72 65 63 74 6f  emporary directo
28f0: 72 79 20 6d 75 73 74 20 62 65 20 64 65 66 69 6e  ry must be defin
2900: 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72 6f  ed...  GOTO erro
2910: 72 73 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f  rs..)....%_VECHO
2920: 25 20 54 65 6d 70 20 3d 20 27 25 54 45 4d 50 25  % Temp = '%TEMP%
2930: 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49  '....IF NOT DEFI
2940: 4e 45 44 20 4c 4f 47 41 53 4d 20 28 0d 0a 20 20  NED LOGASM (..  
2950: 49 46 20 44 45 46 49 4e 45 44 20 55 53 45 44 4f  IF DEFINED USEDO
2960: 54 4e 45 54 20 28 0d 0a 20 20 20 20 53 45 54 20  TNET (..    SET 
2970: 4c 4f 47 41 53 4d 3d 4d 69 63 72 6f 73 6f 66 74  LOGASM=Microsoft
2980: 2e 42 75 69 6c 64 0d 0a 20 20 29 20 45 4c 53 45  .Build..  ) ELSE
2990: 20 28 0d 0a 20 20 20 20 53 45 54 20 4c 4f 47 41   (..    SET LOGA
29a0: 53 4d 3d 4d 69 63 72 6f 73 6f 66 74 2e 42 75 69  SM=Microsoft.Bui
29b0: 6c 64 2e 45 6e 67 69 6e 65 0d 0a 20 20 29 0d 0a  ld.Engine..  )..
29c0: 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 4c 6f  )....%_VECHO% Lo
29d0: 67 41 73 6d 20 3d 20 27 25 4c 4f 47 41 53 4d 25  gAsm = '%LOGASM%
29e0: 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49  '....IF NOT DEFI
29f0: 4e 45 44 20 4c 4f 47 44 49 52 20 28 0d 0a 20 20  NED LOGDIR (..  
2a00: 53 45 54 20 4c 4f 47 44 49 52 3d 25 54 45 4d 50  SET LOGDIR=%TEMP
2a10: 25 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25  %..)....%_VECHO%
2a20: 20 4c 6f 67 44 69 72 20 3d 20 27 25 4c 4f 47 44   LogDir = '%LOGD
2a30: 49 52 25 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44  IR%'....IF NOT D
2a40: 45 46 49 4e 45 44 20 4c 4f 47 50 52 45 46 49 58  EFINED LOGPREFIX
2a50: 20 28 0d 0a 20 20 53 45 54 20 4c 4f 47 50 52 45   (..  SET LOGPRE
2a60: 46 49 58 3d 53 79 73 74 65 6d 2e 44 61 74 61 2e  FIX=System.Data.
2a70: 53 51 4c 69 74 65 2e 42 75 69 6c 64 0d 0a 29 0d  SQLite.Build..).
2a80: 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 4c 6f 67 50  ...%_VECHO% LogP
2a90: 72 65 66 69 78 20 3d 20 27 25 4c 4f 47 50 52 45  refix = '%LOGPRE
2aa0: 46 49 58 25 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20  FIX%'....IF NOT 
2ab0: 44 45 46 49 4e 45 44 20 4c 4f 47 53 55 46 46 49  DEFINED LOGSUFFI
2ac0: 58 20 28 0d 0a 20 20 53 45 54 20 4c 4f 47 53 55  X (..  SET LOGSU
2ad0: 46 46 49 58 3d 55 6e 6b 6e 6f 77 6e 0d 0a 29 0d  FFIX=Unknown..).
2ae0: 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 4c 6f 67 53  ...%_VECHO% LogS
2af0: 75 66 66 69 78 20 3d 20 27 25 4c 4f 47 53 55 46  uffix = '%LOGSUF
2b00: 46 49 58 25 27 0d 0a 0d 0a 49 46 20 44 45 46 49  FIX%'....IF DEFI
2b10: 4e 45 44 20 4c 4f 47 47 49 4e 47 20 47 4f 54 4f  NED LOGGING GOTO
2b20: 20 73 6b 69 70 5f 73 65 74 4c 6f 67 67 69 6e 67   skip_setLogging
2b30: 0d 0a 49 46 20 44 45 46 49 4e 45 44 20 4e 4f 4c  ..IF DEFINED NOL
2b40: 4f 47 20 47 4f 54 4f 20 73 6b 69 70 5f 73 65 74  OG GOTO skip_set
2b50: 4c 6f 67 67 69 6e 67 0d 0a 0d 0a 53 45 54 20 4c  Logging....SET L
2b60: 4f 47 47 49 4e 47 3d 22 2f 6c 6f 67 67 65 72 3a  OGGING="/logger:
2b70: 46 69 6c 65 4c 6f 67 67 65 72 2c 25 4c 4f 47 41  FileLogger,%LOGA
2b80: 53 4d 25 3b 4c 6f 67 66 69 6c 65 3d 25 4c 4f 47  SM%;Logfile=%LOG
2b90: 44 49 52 25 5c 25 4c 4f 47 50 52 45 46 49 58 25  DIR%\%LOGPREFIX%
2ba0: 5f 25 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 25  _%CONFIGURATION%
2bb0: 5f 25 50 4c 41 54 46 4f 52 4d 25 5f 25 59 45 41  _%PLATFORM%_%YEA
2bc0: 52 25 5f 25 4c 4f 47 53 55 46 46 49 58 25 2e 6c  R%_%LOGSUFFIX%.l
2bd0: 6f 67 3b 56 65 72 62 6f 73 69 74 79 3d 64 69 61  og;Verbosity=dia
2be0: 67 6e 6f 73 74 69 63 22 0d 0a 0d 0a 25 5f 56 45  gnostic"....%_VE
2bf0: 43 48 4f 25 20 4c 6f 67 67 69 6e 67 20 3d 20 27  CHO% Logging = '
2c00: 25 4c 4f 47 47 49 4e 47 25 27 0d 0a 0d 0a 3a 73  %LOGGING%'....:s
2c10: 6b 69 70 5f 73 65 74 4c 6f 67 67 69 6e 67 0d 0a  kip_setLogging..
2c20: 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44  ..IF NOT DEFINED
2c30: 20 4e 4f 50 52 4f 50 53 20 28 0d 0a 20 20 49 46   NOPROPS (..  IF
2c40: 20 45 58 49 53 54 20 45 78 74 65 72 6e 61 6c 73   EXIST Externals
2c50: 5c 45 61 67 6c 65 5c 62 69 6e 5c 6e 65 74 46 72  \Eagle\bin\netFr
2c60: 61 6d 65 77 6f 72 6b 34 30 5c 45 61 67 6c 65 53  amework40\EagleS
2c70: 68 65 6c 6c 2e 65 78 65 20 28 0d 0a 20 20 20 20  hell.exe (..    
2c80: 49 46 20 44 45 46 49 4e 45 44 20 49 4e 54 45 52  IF DEFINED INTER
2c90: 4f 50 5f 45 58 54 52 41 5f 50 52 4f 50 53 5f 46  OP_EXTRA_PROPS_F
2ca0: 49 4c 45 20 28 0d 0a 20 20 20 20 20 20 52 45 4d  ILE (..      REM
2cb0: 0d 0a 20 20 20 20 20 20 52 45 4d 20 48 41 43 4b  ..      REM HACK
2cc0: 3a 20 54 68 69 73 20 69 73 20 75 73 65 64 20 74  : This is used t
2cd0: 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 61 20  o work around a 
2ce0: 6c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 56 69  limitation of Vi
2cf0: 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 30 35  sual Studio 2005
2d00: 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20 20  ..      REM     
2d10: 20 20 61 6e 64 20 32 30 30 38 20 74 68 61 74 20    and 2008 that 
2d20: 70 72 65 76 65 6e 74 73 20 74 68 65 20 22 49 6e  prevents the "In
2d30: 68 65 72 69 74 65 64 50 72 6f 70 65 72 74 79 53  heritedPropertyS
2d40: 68 65 65 74 73 22 20 61 74 74 72 69 62 75 74 65  heets" attribute
2d50: 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20 20  ..      REM     
2d60: 20 20 76 61 6c 75 65 20 66 72 6f 6d 20 77 6f 72    value from wor
2d70: 6b 69 6e 67 20 63 6f 72 72 65 63 74 6c 79 20 77  king correctly w
2d80: 68 65 6e 20 69 74 20 72 65 66 65 72 73 20 74 6f  hen it refers to
2d90: 20 61 20 70 72 6f 70 65 72 74 79 20 74 68 61 74   a property that
2da0: 0d 0a 20 20 20 20 20 20 52 45 4d 20 20 20 20 20  ..      REM     
2db0: 20 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61    evaluates to a
2dc0: 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0d  n empty string..
2dd0: 0a 20 20 20 20 20 20 52 45 4d 0d 0a 20 20 20 20  .      REM..    
2de0: 20 20 25 5f 5f 45 43 48 4f 25 20 45 78 74 65 72    %__ECHO% Exter
2df0: 6e 61 6c 73 5c 45 61 67 6c 65 5c 62 69 6e 5c 6e  nals\Eagle\bin\n
2e00: 65 74 46 72 61 6d 65 77 6f 72 6b 34 30 5c 45 61  etFramework40\Ea
2e10: 67 6c 65 53 68 65 6c 6c 2e 65 78 65 20 2d 65 76  gleShell.exe -ev
2e20: 61 6c 75 61 74 65 20 22 73 65 74 20 66 69 6c 65  aluate "set file
2e30: 4e 61 6d 65 20 7b 53 51 4c 69 74 65 2e 49 6e 74  Name {SQLite.Int
2e40: 65 72 6f 70 2f 70 72 6f 70 73 2f 69 6e 63 6c 75  erop/props/inclu
2e50: 64 65 2e 76 73 70 72 6f 70 73 7d 3b 20 73 65 74  de.vsprops}; set
2e60: 20 64 61 74 61 20 5b 72 65 61 64 46 69 6c 65 20   data [readFile 
2e70: 24 66 69 6c 65 4e 61 6d 65 5d 3b 20 72 65 67 73  $fileName]; regs
2e80: 75 62 20 2d 2d 20 7b 09 49 6e 68 65 72 69 74 65  ub -- {.Inherite
2e90: 64 50 72 6f 70 65 72 74 79 53 68 65 65 74 73 3d  dPropertySheets=
2ea0: 5c 22 5c 22 7d 20 24 64 61 74 61 20 7b 09 49 6e  \"\"} $data {.In
2eb0: 68 65 72 69 74 65 64 50 72 6f 70 65 72 74 79 53  heritedPropertyS
2ec0: 68 65 65 74 73 3d 5c 22 24 5e 28 49 4e 54 45 52  heets=\"$^(INTER
2ed0: 4f 50 5f 45 58 54 52 41 5f 50 52 4f 50 53 5f 46  OP_EXTRA_PROPS_F
2ee0: 49 4c 45 5e 29 5c 22 7d 20 64 61 74 61 3b 20 77  ILE^)\"} data; w
2ef0: 72 69 74 65 46 69 6c 65 20 24 66 69 6c 65 4e 61  riteFile $fileNa
2f00: 6d 65 20 24 64 61 74 61 22 0d 0a 0d 0a 20 20 20  me $data"....   
2f10: 20 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c     IF ERRORLEVEL
2f20: 20 31 20 28 0d 0a 20 20 20 20 20 20 20 20 45 43   1 (..        EC
2f30: 48 4f 20 50 72 6f 70 65 72 74 79 20 66 69 6c 65  HO Property file
2f40: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66   modification of
2f50: 20 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70   "SQLite.Interop
2f60: 5c 70 72 6f 70 73 5c 69 6e 63 6c 75 64 65 2e 76  \props\include.v
2f70: 73 70 72 6f 70 73 22 20 66 61 69 6c 65 64 2e 0d  sprops" failed..
2f80: 0a 20 20 20 20 20 20 20 20 47 4f 54 4f 20 65 72  .        GOTO er
2f90: 72 6f 72 73 0d 0a 20 20 20 20 20 20 29 20 45 4c  rors..      ) EL
2fa0: 53 45 20 28 0d 0a 20 20 20 20 20 20 20 20 45 43  SE (..        EC
2fb0: 48 4f 20 50 72 6f 70 65 72 74 79 20 66 69 6c 65  HO Property file
2fc0: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 73 75   modification su
2fd0: 63 63 65 73 73 66 75 6c 2e 0d 0a 20 20 20 20 20  ccessful...     
2fe0: 20 29 0d 0a 20 20 20 20 29 0d 0a 20 20 29 20 45   )..    )..  ) E
2ff0: 4c 53 45 20 28 0d 0a 20 20 20 20 45 43 48 4f 20  LSE (..    ECHO 
3000: 57 41 52 4e 49 4e 47 3a 20 50 72 6f 70 65 72 74  WARNING: Propert
3010: 79 20 66 69 6c 65 20 6d 6f 64 69 66 69 63 61 74  y file modificat
3020: 69 6f 6e 20 73 6b 69 70 70 65 64 2c 20 45 61 67  ion skipped, Eag
3030: 6c 65 20 62 69 6e 61 72 69 65 73 20 61 72 65 20  le binaries are 
3040: 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a  not available...
3050: 20 20 29 0d 0a 29 20 45 4c 53 45 20 28 0d 0a 20    )..) ELSE (.. 
3060: 20 45 43 48 4f 20 57 41 52 4e 49 4e 47 3a 20 50   ECHO WARNING: P
3070: 72 6f 70 65 72 74 79 20 66 69 6c 65 20 6d 6f 64  roperty file mod
3080: 69 66 69 63 61 74 69 6f 6e 20 73 6b 69 70 70 65  ification skippe
3090: 64 2c 20 64 69 73 61 62 6c 65 64 20 76 69 61 20  d, disabled via 
30a0: 4e 4f 50 52 4f 50 53 20 65 6e 76 69 72 6f 6e 6d  NOPROPS environm
30b0: 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a 29  ent variable...)
30c0: 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e  ....IF NOT DEFIN
30d0: 45 44 20 4e 4f 54 41 47 20 28 0d 0a 20 20 49 46  ED NOTAG (..  IF
30e0: 20 45 58 49 53 54 20 45 78 74 65 72 6e 61 6c 73   EXIST Externals
30f0: 5c 45 61 67 6c 65 5c 62 69 6e 5c 6e 65 74 46 72  \Eagle\bin\netFr
3100: 61 6d 65 77 6f 72 6b 34 30 5c 45 61 67 6c 65 53  amework40\EagleS
3110: 68 65 6c 6c 2e 65 78 65 20 28 0d 0a 20 20 20 20  hell.exe (..    
3120: 25 5f 5f 45 43 48 4f 25 20 45 78 74 65 72 6e 61  %__ECHO% Externa
3130: 6c 73 5c 45 61 67 6c 65 5c 62 69 6e 5c 6e 65 74  ls\Eagle\bin\net
3140: 46 72 61 6d 65 77 6f 72 6b 34 30 5c 45 61 67 6c  Framework40\Eagl
3150: 65 53 68 65 6c 6c 2e 65 78 65 20 2d 66 69 6c 65  eShell.exe -file
3160: 20 53 65 74 75 70 5c 73 6f 75 72 63 65 54 61 67   Setup\sourceTag
3170: 2e 65 61 67 6c 65 20 53 6f 75 72 63 65 49 64 4d  .eagle SourceIdM
3180: 6f 64 65 20 53 51 4c 69 74 65 2e 49 6e 74 65 72  ode SQLite.Inter
3190: 6f 70 5c 73 72 63 5c 67 65 6e 65 72 69 63 5c 69  op\src\generic\i
31a0: 6e 74 65 72 6f 70 2e 68 0d 0a 0d 0a 20 20 20 20  nterop.h....    
31b0: 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20 31 20  IF ERRORLEVEL 1 
31c0: 28 0d 0a 20 20 20 20 20 20 45 43 48 4f 20 53 6f  (..      ECHO So
31d0: 75 72 63 65 20 74 61 67 67 69 6e 67 20 6f 66 20  urce tagging of 
31e0: 22 53 51 4c 69 74 65 2e 49 6e 74 65 72 6f 70 5c  "SQLite.Interop\
31f0: 73 72 63 5c 67 65 6e 65 72 69 63 5c 69 6e 74 65  src\generic\inte
3200: 72 6f 70 2e 68 22 20 66 61 69 6c 65 64 2e 0d 0a  rop.h" failed...
3210: 20 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72        GOTO error
3220: 73 0d 0a 20 20 20 20 29 0d 0a 0d 0a 20 20 20 20  s..    )....    
3230: 25 5f 5f 45 43 48 4f 25 20 45 78 74 65 72 6e 61  %__ECHO% Externa
3240: 6c 73 5c 45 61 67 6c 65 5c 62 69 6e 5c 6e 65 74  ls\Eagle\bin\net
3250: 46 72 61 6d 65 77 6f 72 6b 34 30 5c 45 61 67 6c  Framework40\Eagl
3260: 65 53 68 65 6c 6c 2e 65 78 65 20 2d 66 69 6c 65  eShell.exe -file
3270: 20 53 65 74 75 70 5c 73 6f 75 72 63 65 54 61 67   Setup\sourceTag
3280: 2e 65 61 67 6c 65 20 53 6f 75 72 63 65 49 64 4d  .eagle SourceIdM
3290: 6f 64 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ode System.Data.
32a0: 53 51 4c 69 74 65 5c 53 51 4c 69 74 65 50 61 74  SQLite\SQLitePat
32b0: 63 68 4c 65 76 65 6c 2e 63 73 0d 0a 0d 0a 20 20  chLevel.cs....  
32c0: 20 20 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20    IF ERRORLEVEL 
32d0: 31 20 28 0d 0a 20 20 20 20 20 20 45 43 48 4f 20  1 (..      ECHO 
32e0: 53 6f 75 72 63 65 20 74 61 67 67 69 6e 67 20 6f  Source tagging o
32f0: 66 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  f "System.Data.S
3300: 51 4c 69 74 65 5c 53 51 4c 69 74 65 50 61 74 63  QLite\SQLitePatc
3310: 68 4c 65 76 65 6c 2e 63 73 22 20 66 61 69 6c 65  hLevel.cs" faile
3320: 64 2e 0d 0a 20 20 20 20 20 20 47 4f 54 4f 20 65  d...      GOTO e
3330: 72 72 6f 72 73 0d 0a 20 20 20 20 29 0d 0a 20 20  rrors..    )..  
3340: 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 45 43  ) ELSE (..    EC
3350: 48 4f 20 57 41 52 4e 49 4e 47 3a 20 53 6f 75 72  HO WARNING: Sour
3360: 63 65 20 74 61 67 67 69 6e 67 20 73 6b 69 70 70  ce tagging skipp
3370: 65 64 2c 20 45 61 67 6c 65 20 62 69 6e 61 72 69  ed, Eagle binari
3380: 65 73 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c  es are not avail
3390: 61 62 6c 65 2e 0d 0a 20 20 29 0d 0a 29 20 45 4c  able...  )..) EL
33a0: 53 45 20 28 0d 0a 20 20 45 43 48 4f 20 57 41 52  SE (..  ECHO WAR
33b0: 4e 49 4e 47 3a 20 53 6f 75 72 63 65 20 74 61 67  NING: Source tag
33c0: 67 69 6e 67 20 73 6b 69 70 70 65 64 2c 20 64 69  ging skipped, di
33d0: 73 61 62 6c 65 64 20 76 69 61 20 4e 4f 54 41 47  sabled via NOTAG
33e0: 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72   environment var
33f0: 69 61 62 6c 65 2e 0d 0a 29 0d 0a 0d 0a 43 41 4c  iable...)....CAL
3400: 4c 20 3a 66 6e 5f 43 6f 70 79 56 61 72 69 61 62  L :fn_CopyVariab
3410: 6c 65 20 4d 53 42 55 49 4c 44 5f 41 52 47 53 5f  le MSBUILD_ARGS_
3420: 25 42 41 53 45 5f 43 4f 4e 46 49 47 55 52 41 54  %BASE_CONFIGURAT
3430: 49 4f 4e 25 20 4d 53 42 55 49 4c 44 5f 41 52 47  ION% MSBUILD_ARG
3440: 53 5f 43 46 47 0d 0a 0d 0a 49 46 20 44 45 46 49  S_CFG....IF DEFI
3450: 4e 45 44 20 55 53 45 44 4f 54 4e 45 54 20 28 0d  NED USEDOTNET (.
3460: 0a 20 20 53 45 54 20 4d 53 42 55 49 4c 44 3d 25  .  SET MSBUILD=%
3470: 44 4f 54 4e 45 54 25 0d 0a 20 20 53 45 54 20 53  DOTNET%..  SET S
3480: 55 42 43 4f 4d 4d 41 4e 44 53 3d 62 75 69 6c 64  UBCOMMANDS=build
3490: 0d 0a 20 20 53 45 54 20 54 41 52 47 45 54 3d 42  ..  SET TARGET=B
34a0: 75 69 6c 64 0d 0a 29 20 45 4c 53 45 20 28 0d 0a  uild..) ELSE (..
34b0: 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74    CALL :fn_Unset
34c0: 56 61 72 69 61 62 6c 65 20 53 55 42 43 4f 4d 4d  Variable SUBCOMM
34d0: 41 4e 44 53 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43  ANDS..)....%_VEC
34e0: 48 4f 25 20 4d 73 42 75 69 6c 64 20 3d 20 27 25  HO% MsBuild = '%
34f0: 4d 53 42 55 49 4c 44 25 27 0d 0a 25 5f 56 45 43  MSBUILD%'..%_VEC
3500: 48 4f 25 20 53 75 62 43 6f 6d 6d 61 6e 64 73 20  HO% SubCommands 
3510: 3d 20 27 25 53 55 42 43 4f 4d 4d 41 4e 44 53 25  = '%SUBCOMMANDS%
3520: 27 0d 0a 25 5f 56 45 43 48 4f 25 20 54 61 72 67  '..%_VECHO% Targ
3530: 65 74 20 3d 20 27 25 54 41 52 47 45 54 25 27 0d  et = '%TARGET%'.
3540: 0a 25 5f 56 45 43 48 4f 25 20 42 75 69 6c 64 41  .%_VECHO% BuildA
3550: 72 67 73 20 3d 20 27 25 42 55 49 4c 44 5f 41 52  rgs = '%BUILD_AR
3560: 47 53 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20 4d  GS%'..%_VECHO% M
3570: 73 42 75 69 6c 64 41 72 67 73 20 3d 20 27 25 4d  sBuildArgs = '%M
3580: 53 42 55 49 4c 44 5f 41 52 47 53 25 27 0d 0a 25  SBUILD_ARGS%'..%
3590: 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c 64 41  _VECHO% MsBuildA
35a0: 72 67 73 43 66 67 20 3d 20 27 25 4d 53 42 55 49  rgsCfg = '%MSBUI
35b0: 4c 44 5f 41 52 47 53 5f 43 46 47 25 27 0d 0a 0d  LD_ARGS_CFG%'...
35c0: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
35d0: 4e 4f 42 55 49 4c 44 20 28 0d 0a 20 20 25 5f 5f  NOBUILD (..  %__
35e0: 45 43 48 4f 25 20 22 25 4d 53 42 55 49 4c 44 25  ECHO% "%MSBUILD%
35f0: 22 20 25 53 55 42 43 4f 4d 4d 41 4e 44 53 25 20  " %SUBCOMMANDS% 
3600: 22 25 53 4f 4c 55 54 49 4f 4e 25 22 20 22 2f 74  "%SOLUTION%" "/t
3610: 61 72 67 65 74 3a 25 54 41 52 47 45 54 25 22 20  arget:%TARGET%" 
3620: 22 2f 70 72 6f 70 65 72 74 79 3a 43 6f 6e 66 69  "/property:Confi
3630: 67 75 72 61 74 69 6f 6e 3d 25 4d 53 42 55 49 4c  guration=%MSBUIL
3640: 44 5f 43 4f 4e 46 49 47 55 52 41 54 49 4f 4e 25  D_CONFIGURATION%
3650: 22 20 22 2f 70 72 6f 70 65 72 74 79 3a 50 6c 61  " "/property:Pla
3660: 74 66 6f 72 6d 3d 25 50 4c 41 54 46 4f 52 4d 25  tform=%PLATFORM%
3670: 22 20 25 4c 4f 47 47 49 4e 47 25 20 25 42 55 49  " %LOGGING% %BUI
3680: 4c 44 5f 41 52 47 53 25 20 25 4d 53 42 55 49 4c  LD_ARGS% %MSBUIL
3690: 44 5f 41 52 47 53 25 20 25 4d 53 42 55 49 4c 44  D_ARGS% %MSBUILD
36a0: 5f 41 52 47 53 5f 43 46 47 25 0d 0a 0d 0a 20 20  _ARGS_CFG%....  
36b0: 49 46 20 45 52 52 4f 52 4c 45 56 45 4c 20 31 20  IF ERRORLEVEL 1 
36c0: 28 0d 0a 20 20 20 20 45 43 48 4f 20 42 75 69 6c  (..    ECHO Buil
36d0: 64 20 66 61 69 6c 65 64 2e 0d 0a 20 20 20 20 47  d failed...    G
36e0: 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 29 0d  OTO errors..  ).
36f0: 0a 29 20 45 4c 53 45 20 28 0d 0a 20 20 45 43 48  .) ELSE (..  ECH
3700: 4f 20 57 41 52 4e 49 4e 47 3a 20 42 75 69 6c 64  O WARNING: Build
3710: 20 73 6b 69 70 70 65 64 2c 20 64 69 73 61 62 6c   skipped, disabl
3720: 65 64 20 76 69 61 20 4e 4f 42 55 49 4c 44 20 65  ed via NOBUILD e
3730: 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61  nvironment varia
3740: 62 6c 65 2e 0d 0a 29 0d 0a 0d 0a 25 5f 5f 45 43  ble...)....%__EC
3750: 48 4f 32 25 20 50 4f 50 44 0d 0a 0d 0a 49 46 20  HO2% POPD....IF 
3760: 45 52 52 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a  ERRORLEVEL 1 (..
3770: 20 20 45 43 48 4f 20 43 6f 75 6c 64 20 6e 6f 74    ECHO Could not
3780: 20 72 65 73 74 6f 72 65 20 64 69 72 65 63 74 6f   restore directo
3790: 72 79 2e 0d 0a 20 20 47 4f 54 4f 20 65 72 72 6f  ry...  GOTO erro
37a0: 72 73 0d 0a 29 0d 0a 0d 0a 47 4f 54 4f 20 6e 6f  rs..)....GOTO no
37b0: 5f 65 72 72 6f 72 73 0d 0a 0d 0a 3a 66 6e 5f 43  _errors....:fn_C
37c0: 68 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72  heckFrameworkDir
37d0: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 4e  ..  IF DEFINED N
37e0: 4f 46 52 41 4d 45 57 4f 52 4b 44 49 52 20 47 4f  OFRAMEWORKDIR GO
37f0: 54 4f 20 3a 45 4f 46 0d 0a 20 20 53 45 54 20 46  TO :EOF..  SET F
3800: 52 41 4d 45 57 4f 52 4b 56 45 52 3d 25 31 0d 0a  RAMEWORKVER=%1..
3810: 20 20 25 5f 41 45 43 48 4f 25 20 43 68 65 63 6b    %_AECHO% Check
3820: 69 6e 67 20 66 6f 72 20 2e 4e 45 54 20 46 72 61  ing for .NET Fra
3830: 6d 65 77 6f 72 6b 20 22 25 46 52 41 4d 45 57 4f  mework "%FRAMEWO
3840: 52 4b 56 45 52 25 22 2e 2e 2e 0d 0a 20 20 49 46  RKVER%".....  IF
3850: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 46 52 41   NOT DEFINED FRA
3860: 4d 45 57 4f 52 4b 56 45 52 20 47 4f 54 4f 20 3a  MEWORKVER GOTO :
3870: 45 4f 46 0d 0a 20 20 49 46 20 44 45 46 49 4e 45  EOF..  IF DEFINE
3880: 44 20 4e 4f 46 52 41 4d 45 57 4f 52 4b 36 34 20  D NOFRAMEWORK64 
3890: 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20  (..    %_AECHO% 
38a0: 46 6f 72 63 65 64 20 69 6e 74 6f 20 75 73 69 6e  Forced into usin
38b0: 67 20 33 32 2d 62 69 74 20 76 65 72 73 69 6f 6e  g 32-bit version
38c0: 20 6f 66 20 4d 53 42 75 69 6c 64 20 66 72 6f 6d   of MSBuild from
38d0: 20 4d 69 63 72 6f 73 6f 66 74 2e 4e 45 54 2e 2e   Microsoft.NET..
38e0: 2e 0d 0a 20 20 20 20 53 45 54 20 46 52 41 4d 45  ...    SET FRAME
38f0: 57 4f 52 4b 44 49 52 3d 25 77 69 6e 64 69 72 25  WORKDIR=%windir%
3900: 5c 4d 69 63 72 6f 73 6f 66 74 2e 4e 45 54 5c 46  \Microsoft.NET\F
3910: 72 61 6d 65 77 6f 72 6b 5c 25 46 52 41 4d 45 57  ramework\%FRAMEW
3920: 4f 52 4b 56 45 52 25 0d 0a 20 20 20 20 43 41 4c  ORKVER%..    CAL
3930: 4c 20 3a 66 6e 5f 56 65 72 69 66 79 46 72 61 6d  L :fn_VerifyFram
3940: 65 77 6f 72 6b 44 69 72 0d 0a 20 20 20 20 47 4f  eworkDir..    GO
3950: 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20  TO :EOF..  )..  
3960: 49 46 20 4e 4f 54 20 22 25 50 52 4f 43 45 53 53  IF NOT "%PROCESS
3970: 4f 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 25  OR_ARCHITECTURE%
3980: 22 20 3d 3d 20 22 78 38 36 22 20 28 0d 0a 20 20  " == "x86" (..  
3990: 20 20 25 5f 41 45 43 48 4f 25 20 54 68 65 20 6f    %_AECHO% The o
39a0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
39b0: 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 36 34  appears to be 64
39c0: 2d 62 69 74 2e 0d 0a 20 20 20 20 49 46 20 45 58  -bit...    IF EX
39d0: 49 53 54 20 22 25 77 69 6e 64 69 72 25 5c 4d 69  IST "%windir%\Mi
39e0: 63 72 6f 73 6f 66 74 2e 4e 45 54 5c 46 72 61 6d  crosoft.NET\Fram
39f0: 65 77 6f 72 6b 36 34 5c 25 46 52 41 4d 45 57 4f  ework64\%FRAMEWO
3a00: 52 4b 56 45 52 25 22 20 28 0d 0a 20 20 20 20 20  RKVER%" (..     
3a10: 20 49 46 20 45 58 49 53 54 20 22 25 77 69 6e 64   IF EXIST "%wind
3a20: 69 72 25 5c 4d 69 63 72 6f 73 6f 66 74 2e 4e 45  ir%\Microsoft.NE
3a30: 54 5c 46 72 61 6d 65 77 6f 72 6b 36 34 5c 25 46  T\Framework64\%F
3a40: 52 41 4d 45 57 4f 52 4b 56 45 52 25 5c 25 4d 53  RAMEWORKVER%\%MS
3a50: 42 55 49 4c 44 25 22 20 28 0d 0a 20 20 20 20 20  BUILD%" (..     
3a60: 20 20 20 49 46 20 45 58 49 53 54 20 22 25 77 69     IF EXIST "%wi
3a70: 6e 64 69 72 25 5c 4d 69 63 72 6f 73 6f 66 74 2e  ndir%\Microsoft.
3a80: 4e 45 54 5c 46 72 61 6d 65 77 6f 72 6b 36 34 5c  NET\Framework64\
3a90: 25 46 52 41 4d 45 57 4f 52 4b 56 45 52 25 5c 25  %FRAMEWORKVER%\%
3aa0: 43 53 43 25 22 20 28 0d 0a 20 20 20 20 20 20 20  CSC%" (..       
3ab0: 20 20 20 25 5f 41 45 43 48 4f 25 20 55 73 69 6e     %_AECHO% Usin
3ac0: 67 20 36 34 2d 62 69 74 20 76 65 72 73 69 6f 6e  g 64-bit version
3ad0: 20 6f 66 20 4d 53 42 75 69 6c 64 20 66 72 6f 6d   of MSBuild from
3ae0: 20 4d 69 63 72 6f 73 6f 66 74 2e 4e 45 54 2e 2e   Microsoft.NET..
3af0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 53 45 54  ...          SET
3b00: 20 46 52 41 4d 45 57 4f 52 4b 44 49 52 3d 25 77   FRAMEWORKDIR=%w
3b10: 69 6e 64 69 72 25 5c 4d 69 63 72 6f 73 6f 66 74  indir%\Microsoft
3b20: 2e 4e 45 54 5c 46 72 61 6d 65 77 6f 72 6b 36 34  .NET\Framework64
3b30: 5c 25 46 52 41 4d 45 57 4f 52 4b 56 45 52 25 0d  \%FRAMEWORKVER%.
3b40: 0a 20 20 20 20 20 20 20 20 20 20 43 41 4c 4c 20  .          CALL 
3b50: 3a 66 6e 5f 56 65 72 69 66 79 46 72 61 6d 65 77  :fn_VerifyFramew
3b60: 6f 72 6b 44 69 72 0d 0a 20 20 20 20 20 20 20 20  orkDir..        
3b70: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 20    GOTO :EOF..   
3b80: 20 20 20 20 20 29 20 45 4c 53 45 20 28 0d 0a 20       ) ELSE (.. 
3b90: 20 20 20 20 20 20 20 20 20 25 5f 41 45 43 48 4f           %_AECHO
3ba0: 25 20 4d 69 73 73 69 6e 67 20 36 34 2d 62 69 74  % Missing 64-bit
3bb0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 22 25 43 53   version of "%CS
3bc0: 43 25 22 2e 0d 0a 20 20 20 20 20 20 20 20 29 0d  C%"...        ).
3bd0: 0a 20 20 20 20 20 20 29 20 45 4c 53 45 20 28 0d  .      ) ELSE (.
3be0: 0a 20 20 20 20 20 20 20 20 25 5f 41 45 43 48 4f  .        %_AECHO
3bf0: 25 20 4d 69 73 73 69 6e 67 20 36 34 2d 62 69 74  % Missing 64-bit
3c00: 20 76 65 72 73 69 6f 6e 20 6f 66 20 22 25 4d 53   version of "%MS
3c10: 42 55 49 4c 44 25 22 2e 0d 0a 20 20 20 20 20 20  BUILD%"...      
3c20: 29 0d 0a 20 20 20 20 29 20 45 4c 53 45 20 28 0d  )..    ) ELSE (.
3c30: 0a 20 20 20 20 20 20 25 5f 41 45 43 48 4f 25 20  .      %_AECHO% 
3c40: 4d 69 73 73 69 6e 67 20 36 34 2d 62 69 74 20 76  Missing 64-bit v
3c50: 65 72 73 69 6f 6e 20 6f 66 20 2e 4e 45 54 20 46  ersion of .NET F
3c60: 72 61 6d 65 77 6f 72 6b 20 22 25 46 52 41 4d 45  ramework "%FRAME
3c70: 57 4f 52 4b 56 45 52 25 22 2e 0d 0a 20 20 20 20  WORKVER%"...    
3c80: 29 0d 0a 20 20 29 20 45 4c 53 45 20 28 0d 0a 20  )..  ) ELSE (.. 
3c90: 20 20 20 25 5f 41 45 43 48 4f 25 20 54 68 65 20     %_AECHO% The 
3ca0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
3cb0: 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 33   appears to be 3
3cc0: 32 2d 62 69 74 2e 0d 0a 20 20 29 0d 0a 20 20 25  2-bit...  )..  %
3cd0: 5f 41 45 43 48 4f 25 20 55 73 69 6e 67 20 33 32  _AECHO% Using 32
3ce0: 2d 62 69 74 20 76 65 72 73 69 6f 6e 20 6f 66 20  -bit version of 
3cf0: 4d 53 42 75 69 6c 64 20 66 72 6f 6d 20 4d 69 63  MSBuild from Mic
3d00: 72 6f 73 6f 66 74 2e 4e 45 54 2e 2e 2e 0d 0a 20  rosoft.NET..... 
3d10: 20 53 45 54 20 46 52 41 4d 45 57 4f 52 4b 44 49   SET FRAMEWORKDI
3d20: 52 3d 25 77 69 6e 64 69 72 25 5c 4d 69 63 72 6f  R=%windir%\Micro
3d30: 73 6f 66 74 2e 4e 45 54 5c 46 72 61 6d 65 77 6f  soft.NET\Framewo
3d40: 72 6b 5c 25 46 52 41 4d 45 57 4f 52 4b 56 45 52  rk\%FRAMEWORKVER
3d50: 25 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 56 65  %..  CALL :fn_Ve
3d60: 72 69 66 79 46 72 61 6d 65 77 6f 72 6b 44 69 72  rifyFrameworkDir
3d70: 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d  ..  GOTO :EOF...
3d80: 0a 3a 66 6e 5f 56 65 72 69 66 79 46 72 61 6d 65  .:fn_VerifyFrame
3d90: 77 6f 72 6b 44 69 72 0d 0a 20 20 49 46 20 44 45  workDir..  IF DE
3da0: 46 49 4e 45 44 20 4e 4f 46 52 41 4d 45 57 4f 52  FINED NOFRAMEWOR
3db0: 4b 44 49 52 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  KDIR GOTO :EOF..
3dc0: 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44    IF NOT DEFINED
3dd0: 20 46 52 41 4d 45 57 4f 52 4b 44 49 52 20 28 0d   FRAMEWORKDIR (.
3de0: 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 2e 4e  .    %_AECHO% .N
3df0: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 64 69 72  ET Framework dir
3e00: 65 63 74 6f 72 79 20 69 73 20 6e 6f 74 20 64 65  ectory is not de
3e10: 66 69 6e 65 64 2e 0d 0a 20 20 20 20 47 4f 54 4f  fined...    GOTO
3e20: 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20 49 46   :EOF..  )..  IF
3e30: 20 44 45 46 49 4e 45 44 20 46 52 41 4d 45 57 4f   DEFINED FRAMEWO
3e40: 52 4b 44 49 52 20 49 46 20 4e 4f 54 20 45 58 49  RKDIR IF NOT EXI
3e50: 53 54 20 22 25 46 52 41 4d 45 57 4f 52 4b 44 49  ST "%FRAMEWORKDI
3e60: 52 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43  R%" (..    %_AEC
3e70: 48 4f 25 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  HO% .NET Framewo
3e80: 72 6b 20 64 69 72 65 63 74 6f 72 79 20 64 6f 65  rk directory doe
3e90: 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 75 6e 73  s not exist, uns
3ea0: 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43  etting.....    C
3eb0: 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72  ALL :fn_UnsetVar
3ec0: 69 61 62 6c 65 20 46 52 41 4d 45 57 4f 52 4b 44  iable FRAMEWORKD
3ed0: 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  IR..    GOTO :EO
3ee0: 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46  F..  )..  IF DEF
3ef0: 49 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b 44 49  INED FRAMEWORKDI
3f00: 52 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22  R IF NOT EXIST "
3f10: 25 46 52 41 4d 45 57 4f 52 4b 44 49 52 25 5c 25  %FRAMEWORKDIR%\%
3f20: 4d 53 42 55 49 4c 44 25 22 20 28 0d 0a 20 20 20  MSBUILD%" (..   
3f30: 20 25 5f 41 45 43 48 4f 25 20 46 69 6c 65 20 22   %_AECHO% File "
3f40: 25 4d 53 42 55 49 4c 44 25 22 20 6e 6f 74 20 69  %MSBUILD%" not i
3f50: 6e 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  n .NET Framework
3f60: 20 64 69 72 65 63 74 6f 72 79 2c 20 75 6e 73 65   directory, unse
3f70: 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41  tting.....    CA
3f80: 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69  LL :fn_UnsetVari
3f90: 61 62 6c 65 20 46 52 41 4d 45 57 4f 52 4b 44 49  able FRAMEWORKDI
3fa0: 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46  R..    GOTO :EOF
3fb0: 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49  ..  )..  IF DEFI
3fc0: 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b 44 49 52  NED FRAMEWORKDIR
3fd0: 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25   IF NOT EXIST "%
3fe0: 46 52 41 4d 45 57 4f 52 4b 44 49 52 25 5c 25 43  FRAMEWORKDIR%\%C
3ff0: 53 43 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45  SC%" (..    %_AE
4000: 43 48 4f 25 20 46 69 6c 65 20 22 25 43 53 43 25  CHO% File "%CSC%
4010: 22 20 6e 6f 74 20 69 6e 20 2e 4e 45 54 20 46 72  " not in .NET Fr
4020: 61 6d 65 77 6f 72 6b 20 64 69 72 65 63 74 6f 72  amework director
4030: 79 2c 20 75 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d  y, unsetting....
4040: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
4050: 73 65 74 56 61 72 69 61 62 6c 65 20 46 52 41 4d  setVariable FRAM
4060: 45 57 4f 52 4b 44 49 52 0d 0a 20 20 20 20 47 4f  EWORKDIR..    GO
4070: 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20  TO :EOF..  )..  
4080: 25 5f 41 45 43 48 4f 25 20 2e 4e 45 54 20 46 72  %_AECHO% .NET Fr
4090: 61 6d 65 77 6f 72 6b 20 64 69 72 65 63 74 6f 72  amework director
40a0: 79 20 22 25 46 52 41 4d 45 57 4f 52 4b 44 49 52  y "%FRAMEWORKDIR
40b0: 25 22 20 76 65 72 69 66 69 65 64 2e 0d 0a 20 20  %" verified...  
40c0: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e  GOTO :EOF....:fn
40d0: 5f 43 68 65 63 6b 4d 73 42 75 69 6c 64 44 69 72  _CheckMsBuildDir
40e0: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 4e  ..  IF DEFINED N
40f0: 4f 4d 53 42 55 49 4c 44 44 49 52 20 47 4f 54 4f  OMSBUILDDIR GOTO
4100: 20 3a 45 4f 46 0d 0a 20 20 53 45 54 20 4d 53 42   :EOF..  SET MSB
4110: 55 49 4c 44 56 45 52 3d 25 31 0d 0a 20 20 25 5f  UILDVER=%1..  %_
4120: 41 45 43 48 4f 25 20 43 68 65 63 6b 69 6e 67 20  AECHO% Checking 
4130: 66 6f 72 20 4d 53 42 75 69 6c 64 20 22 25 4d 53  for MSBuild "%MS
4140: 42 55 49 4c 44 56 45 52 25 22 2e 2e 2e 0d 0a 20  BUILDVER%"..... 
4150: 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20   IF NOT DEFINED 
4160: 4d 53 42 55 49 4c 44 56 45 52 20 47 4f 54 4f 20  MSBUILDVER GOTO 
4170: 3a 45 4f 46 0d 0a 20 20 49 46 20 44 45 46 49 4e  :EOF..  IF DEFIN
4180: 45 44 20 4e 4f 4d 53 42 55 49 4c 44 36 34 20 28  ED NOMSBUILD64 (
4190: 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 46  ..    %_AECHO% F
41a0: 6f 72 63 65 64 20 69 6e 74 6f 20 75 73 69 6e 67  orced into using
41b0: 20 33 32 2d 62 69 74 20 76 65 72 73 69 6f 6e 20   32-bit version 
41c0: 6f 66 20 4d 53 42 75 69 6c 64 20 66 72 6f 6d 20  of MSBuild from 
41d0: 50 72 6f 67 72 61 6d 20 46 69 6c 65 73 2e 2e 2e  Program Files...
41e0: 0d 0a 20 20 20 20 47 4f 54 4f 20 73 65 74 5f 6d  ..    GOTO set_m
41f0: 73 62 75 69 6c 64 5f 78 38 36 0d 0a 20 20 29 0d  sbuild_x86..  ).
4200: 0a 20 20 49 46 20 22 25 50 52 4f 43 45 53 53 4f  .  IF "%PROCESSO
4210: 52 5f 41 52 43 48 49 54 45 43 54 55 52 45 25 22  R_ARCHITECTURE%"
4220: 20 3d 3d 20 22 78 38 36 22 20 47 4f 54 4f 20 73   == "x86" GOTO s
4230: 65 74 5f 6d 73 62 75 69 6c 64 5f 78 38 36 0d 0a  et_msbuild_x86..
4240: 20 20 25 5f 41 45 43 48 4f 25 20 54 68 65 20 6f    %_AECHO% The o
4250: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
4260: 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 36 34  appears to be 64
4270: 2d 62 69 74 2e 0d 0a 20 20 25 5f 41 45 43 48 4f  -bit...  %_AECHO
4280: 25 20 55 73 69 6e 67 20 33 32 2d 62 69 74 20 76  % Using 32-bit v
4290: 65 72 73 69 6f 6e 20 6f 66 20 4d 53 42 75 69 6c  ersion of MSBuil
42a0: 64 20 66 72 6f 6d 20 50 72 6f 67 72 61 6d 20 46  d from Program F
42b0: 69 6c 65 73 2e 2e 2e 0d 0a 20 20 53 45 54 20 4d  iles.....  SET M
42c0: 53 42 55 49 4c 44 44 49 52 3d 25 50 72 6f 67 72  SBUILDDIR=%Progr
42d0: 61 6d 46 69 6c 65 73 28 78 38 36 29 25 5c 4d 53  amFiles(x86)%\MS
42e0: 42 75 69 6c 64 5c 25 4d 53 42 55 49 4c 44 56 45  Build\%MSBUILDVE
42f0: 52 25 5c 62 69 6e 0d 0a 20 20 47 4f 54 4f 20 73  R%\bin..  GOTO s
4300: 65 74 5f 6d 73 62 75 69 6c 64 5f 64 6f 6e 65 0d  et_msbuild_done.
4310: 0a 20 20 3a 73 65 74 5f 6d 73 62 75 69 6c 64 5f  .  :set_msbuild_
4320: 78 38 36 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20  x86..  %_AECHO% 
4330: 54 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  The operating sy
4340: 73 74 65 6d 20 61 70 70 65 61 72 73 20 74 6f 20  stem appears to 
4350: 62 65 20 33 32 2d 62 69 74 2e 0d 0a 20 20 25 5f  be 32-bit...  %_
4360: 41 45 43 48 4f 25 20 55 73 69 6e 67 20 6e 61 74  AECHO% Using nat
4370: 69 76 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d  ive version of M
4380: 53 42 75 69 6c 64 20 66 72 6f 6d 20 50 72 6f 67  SBuild from Prog
4390: 72 61 6d 20 46 69 6c 65 73 2e 2e 2e 0d 0a 20 20  ram Files.....  
43a0: 53 45 54 20 4d 53 42 55 49 4c 44 44 49 52 3d 25  SET MSBUILDDIR=%
43b0: 50 72 6f 67 72 61 6d 46 69 6c 65 73 25 5c 4d 53  ProgramFiles%\MS
43c0: 42 75 69 6c 64 5c 25 4d 53 42 55 49 4c 44 56 45  Build\%MSBUILDVE
43d0: 52 25 5c 62 69 6e 0d 0a 20 20 3a 73 65 74 5f 6d  R%\bin..  :set_m
43e0: 73 62 75 69 6c 64 5f 64 6f 6e 65 0d 0a 20 20 43  sbuild_done..  C
43f0: 41 4c 4c 20 3a 66 6e 5f 56 65 72 69 66 79 4d 73  ALL :fn_VerifyMs
4400: 42 75 69 6c 64 44 69 72 0d 0a 20 20 47 4f 54 4f  BuildDir..  GOTO
4410: 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 56 65 72   :EOF....:fn_Ver
4420: 69 66 79 4d 73 42 75 69 6c 64 44 69 72 0d 0a 20  ifyMsBuildDir.. 
4430: 20 49 46 20 44 45 46 49 4e 45 44 20 4e 4f 4d 53   IF DEFINED NOMS
4440: 42 55 49 4c 44 44 49 52 20 47 4f 54 4f 20 3a 45  BUILDDIR GOTO :E
4450: 4f 46 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46  OF..  IF NOT DEF
4460: 49 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52 20  INED MSBUILDDIR 
4470: 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20  (..    %_AECHO% 
4480: 4d 53 42 75 69 6c 64 20 64 69 72 65 63 74 6f 72  MSBuild director
4490: 79 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64  y is not defined
44a0: 2e 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46  ...    GOTO :EOF
44b0: 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49  ..  )..  IF DEFI
44c0: 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52 20 49  NED MSBUILDDIR I
44d0: 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25 4d 53  F NOT EXIST "%MS
44e0: 42 55 49 4c 44 44 49 52 25 22 20 28 0d 0a 20 20  BUILDDIR%" (..  
44f0: 20 20 25 5f 41 45 43 48 4f 25 20 4d 53 42 75 69    %_AECHO% MSBui
4500: 6c 64 20 64 69 72 65 63 74 6f 72 79 20 64 6f 65  ld directory doe
4510: 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 75 6e 73  s not exist, uns
4520: 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43  etting.....    C
4530: 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72  ALL :fn_UnsetVar
4540: 69 61 62 6c 65 20 4d 53 42 55 49 4c 44 44 49 52  iable MSBUILDDIR
4550: 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  ..    GOTO :EOF.
4560: 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49 4e  .  )..  IF DEFIN
4570: 45 44 20 4d 53 42 55 49 4c 44 44 49 52 20 49 46  ED MSBUILDDIR IF
4580: 20 4e 4f 54 20 45 58 49 53 54 20 22 25 4d 53 42   NOT EXIST "%MSB
4590: 55 49 4c 44 44 49 52 25 5c 25 4d 53 42 55 49 4c  UILDDIR%\%MSBUIL
45a0: 44 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43  D%" (..    %_AEC
45b0: 48 4f 25 20 46 69 6c 65 20 22 25 4d 53 42 55 49  HO% File "%MSBUI
45c0: 4c 44 25 22 20 6e 6f 74 20 69 6e 20 4d 53 42 75  LD%" not in MSBu
45d0: 69 6c 64 20 64 69 72 65 63 74 6f 72 79 2c 20 75  ild directory, u
45e0: 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20  nsetting.....   
45f0: 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56   CALL :fn_UnsetV
4600: 61 72 69 61 62 6c 65 20 4d 53 42 55 49 4c 44 44  ariable MSBUILDD
4610: 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  IR..    GOTO :EO
4620: 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46  F..  )..  IF DEF
4630: 49 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52 20  INED MSBUILDDIR 
4640: 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25 4d  IF NOT EXIST "%M
4650: 53 42 55 49 4c 44 44 49 52 25 5c 25 43 53 43 25  SBUILDDIR%\%CSC%
4660: 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f  " (..    %_AECHO
4670: 25 20 46 69 6c 65 20 22 25 43 53 43 25 22 20 6e  % File "%CSC%" n
4680: 6f 74 20 69 6e 20 4d 53 42 75 69 6c 64 20 64 69  ot in MSBuild di
4690: 72 65 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69  rectory, unsetti
46a0: 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20  ng.....    CALL 
46b0: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
46c0: 65 20 4d 53 42 55 49 4c 44 44 49 52 0d 0a 20 20  e MSBUILDDIR..  
46d0: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29    GOTO :EOF..  )
46e0: 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 4d 53 42  ..  %_AECHO% MSB
46f0: 75 69 6c 64 20 64 69 72 65 63 74 6f 72 79 20 22  uild directory "
4700: 25 4d 53 42 55 49 4c 44 44 49 52 25 22 20 76 65  %MSBUILDDIR%" ve
4710: 72 69 66 69 65 64 2e 0d 0a 20 20 47 4f 54 4f 20  rified...  GOTO 
4720: 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 43 68 65 63  :EOF....:fn_Chec
4730: 6b 56 69 73 75 61 6c 53 74 75 64 69 6f 4d 73 42  kVisualStudioMsB
4740: 75 69 6c 64 44 69 72 0d 0a 20 20 49 46 20 44 45  uildDir..  IF DE
4750: 46 49 4e 45 44 20 4e 4f 56 49 53 55 41 4c 53 54  FINED NOVISUALST
4760: 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 20 47  UDIOMSBUILDDIR G
4770: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 53 45 54 20  OTO :EOF..  SET 
4780: 4d 53 42 55 49 4c 44 56 45 52 3d 25 31 0d 0a 20  MSBUILDVER=%1.. 
4790: 20 53 45 54 20 56 49 53 55 41 4c 53 54 55 44 49   SET VISUALSTUDI
47a0: 4f 56 45 52 3d 25 32 0d 0a 20 20 25 5f 41 45 43  OVER=%2..  %_AEC
47b0: 48 4f 25 20 43 68 65 63 6b 69 6e 67 20 66 6f 72  HO% Checking for
47c0: 20 4d 53 42 75 69 6c 64 20 22 25 4d 53 42 55 49   MSBuild "%MSBUI
47d0: 4c 44 56 45 52 25 22 20 77 69 74 68 69 6e 20 56  LDVER%" within V
47e0: 69 73 75 61 6c 20 53 74 75 64 69 6f 20 22 25 56  isual Studio "%V
47f0: 49 53 55 41 4c 53 54 55 44 49 4f 56 45 52 25 22  ISUALSTUDIOVER%"
4800: 2e 2e 2e 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45  .....  IF NOT DE
4810: 46 49 4e 45 44 20 4d 53 42 55 49 4c 44 56 45 52  FINED MSBUILDVER
4820: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46   GOTO :EOF..  IF
4830: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 56 49 53   NOT DEFINED VIS
4840: 55 41 4c 53 54 55 44 49 4f 56 45 52 20 47 4f 54  UALSTUDIOVER GOT
4850: 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20 4e 4f 54  O :EOF..  IF NOT
4860: 20 44 45 46 49 4e 45 44 20 56 53 57 48 45 52 45   DEFINED VSWHERE
4870: 5f 45 58 45 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  _EXE GOTO :EOF..
4880: 20 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22    IF NOT EXIST "
4890: 25 56 53 57 48 45 52 45 5f 45 58 45 25 22 20 47  %VSWHERE_EXE%" G
48a0: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 53 45 54 20  OTO :EOF..  SET 
48b0: 56 53 5f 57 48 45 52 45 49 53 5f 43 4d 44 3d 22  VS_WHEREIS_CMD="
48c0: 25 56 53 57 48 45 52 45 5f 45 58 45 25 22 20 2d  %VSWHERE_EXE%" -
48d0: 76 65 72 73 69 6f 6e 20 25 56 49 53 55 41 4c 53  version %VISUALS
48e0: 54 55 44 49 4f 56 45 52 25 20 2d 70 72 6f 64 75  TUDIOVER% -produ
48f0: 63 74 73 20 2a 20 2d 72 65 71 75 69 72 65 73 20  cts * -requires 
4900: 4d 69 63 72 6f 73 6f 66 74 2e 43 6f 6d 70 6f 6e  Microsoft.Compon
4910: 65 6e 74 2e 4d 53 42 75 69 6c 64 20 2d 70 72 6f  ent.MSBuild -pro
4920: 70 65 72 74 79 20 69 6e 73 74 61 6c 6c 61 74 69  perty installati
4930: 6f 6e 50 61 74 68 0d 0a 20 20 49 46 20 44 45 46  onPath..  IF DEF
4940: 49 4e 45 44 20 5f 5f 45 43 48 4f 20 28 0d 0a 20  INED __ECHO (.. 
4950: 20 20 20 25 5f 5f 45 43 48 4f 25 20 25 56 53 5f     %__ECHO% %VS_
4960: 57 48 45 52 45 49 53 5f 43 4d 44 25 0d 0a 20 20  WHEREIS_CMD%..  
4970: 20 20 53 45 54 20 56 49 53 55 41 4c 53 54 55 44    SET VISUALSTUD
4980: 49 4f 49 4e 53 54 41 4c 4c 44 49 52 3d 43 3a 5c  IOINSTALLDIR=C:\
4990: 50 72 6f 67 72 61 6d 20 46 69 6c 65 73 5c 4d 69  Program Files\Mi
49a0: 63 72 6f 73 6f 66 74 20 56 69 73 75 61 6c 20 53  crosoft Visual S
49b0: 74 75 64 69 6f 5c 32 30 31 37 5c 43 6f 6d 6d 75  tudio\2017\Commu
49c0: 6e 69 74 79 0d 0a 20 20 20 20 47 4f 54 4f 20 73  nity..    GOTO s
49d0: 6b 69 70 5f 76 69 73 75 61 6c 53 74 75 64 69 6f  kip_visualStudio
49e0: 49 6e 73 74 61 6c 6c 44 69 72 0d 0a 20 20 29 0d  InstallDir..  ).
49f0: 0a 20 20 46 4f 52 20 2f 46 20 22 64 65 6c 69 6d  .  FOR /F "delim
4a00: 73 3d 22 20 25 25 44 20 49 4e 20 28 27 25 56 53  s=" %%D IN ('%VS
4a10: 5f 57 48 45 52 45 49 53 5f 43 4d 44 25 27 29 20  _WHEREIS_CMD%') 
4a20: 44 4f 20 28 53 45 54 20 56 49 53 55 41 4c 53 54  DO (SET VISUALST
4a30: 55 44 49 4f 49 4e 53 54 41 4c 4c 44 49 52 3d 25  UDIOINSTALLDIR=%
4a40: 25 44 29 0d 0a 20 20 3a 73 6b 69 70 5f 76 69 73  %D)..  :skip_vis
4a50: 75 61 6c 53 74 75 64 69 6f 49 6e 73 74 61 6c 6c  ualStudioInstall
4a60: 44 69 72 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45  Dir..  IF NOT DE
4a70: 46 49 4e 45 44 20 56 49 53 55 41 4c 53 54 55 44  FINED VISUALSTUD
4a80: 49 4f 49 4e 53 54 41 4c 4c 44 49 52 20 28 0d 0a  IOINSTALLDIR (..
4a90: 20 20 20 20 25 5f 41 45 43 48 4f 25 20 56 69 73      %_AECHO% Vis
4aa0: 75 61 6c 20 53 74 75 64 69 6f 20 22 25 56 49 53  ual Studio "%VIS
4ab0: 55 41 4c 53 54 55 44 49 4f 56 45 52 25 22 20 69  UALSTUDIOVER%" i
4ac0: 73 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65 64 2e  s not installed.
4ad0: 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  ..    GOTO :EOF.
4ae0: 0a 20 20 29 0d 0a 20 20 25 5f 41 45 43 48 4f 25  .  )..  %_AECHO%
4af0: 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 22   Visual Studio "
4b00: 25 56 49 53 55 41 4c 53 54 55 44 49 4f 56 45 52  %VISUALSTUDIOVER
4b10: 25 22 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 2e  %" is installed.
4b20: 0d 0a 20 20 53 45 54 20 56 49 53 55 41 4c 53 54  ..  SET VISUALST
4b30: 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 3d 25  UDIOMSBUILDDIR=%
4b40: 56 49 53 55 41 4c 53 54 55 44 49 4f 49 4e 53 54  VISUALSTUDIOINST
4b50: 41 4c 4c 44 49 52 25 5c 4d 53 42 75 69 6c 64 5c  ALLDIR%\MSBuild\
4b60: 25 4d 53 42 55 49 4c 44 56 45 52 25 5c 62 69 6e  %MSBUILDVER%\bin
4b70: 0d 0a 20 20 53 45 54 20 56 49 53 55 41 4c 53 54  ..  SET VISUALST
4b80: 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 3d 25  UDIOMSBUILDDIR=%
4b90: 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42 55  VISUALSTUDIOMSBU
4ba0: 49 4c 44 44 49 52 3a 5c 5c 3d 5c 25 0d 0a 20 20  ILDDIR:\\=\%..  
4bb0: 43 41 4c 4c 20 3a 66 6e 5f 56 65 72 69 66 79 56  CALL :fn_VerifyV
4bc0: 69 73 75 61 6c 53 74 75 64 69 6f 4d 73 42 75 69  isualStudioMsBui
4bd0: 6c 64 44 69 72 0d 0a 20 20 47 4f 54 4f 20 3a 45  ldDir..  GOTO :E
4be0: 4f 46 0d 0a 0d 0a 3a 66 6e 5f 56 65 72 69 66 79  OF....:fn_Verify
4bf0: 56 69 73 75 61 6c 53 74 75 64 69 6f 4d 73 42 75  VisualStudioMsBu
4c00: 69 6c 64 44 69 72 0d 0a 20 20 49 46 20 44 45 46  ildDir..  IF DEF
4c10: 49 4e 45 44 20 4e 4f 56 49 53 55 41 4c 53 54 55  INED NOVISUALSTU
4c20: 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 20 47 4f  DIOMSBUILDDIR GO
4c30: 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20 4e 4f  TO :EOF..  IF NO
4c40: 54 20 44 45 46 49 4e 45 44 20 56 49 53 55 41 4c  T DEFINED VISUAL
4c50: 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52  STUDIOMSBUILDDIR
4c60: 20 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25   (..    %_AECHO%
4c70: 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 64   Visual Studio d
4c80: 69 72 65 63 74 6f 72 79 20 69 73 20 6e 6f 74 20  irectory is not 
4c90: 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20 20 47 4f  defined...    GO
4ca0: 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20  TO :EOF..  )..  
4cb0: 49 46 20 44 45 46 49 4e 45 44 20 56 49 53 55 41  IF DEFINED VISUA
4cc0: 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49  LSTUDIOMSBUILDDI
4cd0: 52 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22  R IF NOT EXIST "
4ce0: 25 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42  %VISUALSTUDIOMSB
4cf0: 55 49 4c 44 44 49 52 25 22 20 28 0d 0a 20 20 20  UILDDIR%" (..   
4d00: 20 25 5f 41 45 43 48 4f 25 20 56 69 73 75 61 6c   %_AECHO% Visual
4d10: 20 53 74 75 64 69 6f 20 64 69 72 65 63 74 6f 72   Studio director
4d20: 79 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  y does not exist
4d30: 2c 20 75 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d 0a  , unsetting.....
4d40: 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73      CALL :fn_Uns
4d50: 65 74 56 61 72 69 61 62 6c 65 20 56 49 53 55 41  etVariable VISUA
4d60: 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49  LSTUDIOMSBUILDDI
4d70: 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46  R..    GOTO :EOF
4d80: 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49  ..  )..  IF DEFI
4d90: 4e 45 44 20 56 49 53 55 41 4c 53 54 55 44 49 4f  NED VISUALSTUDIO
4da0: 4d 53 42 55 49 4c 44 44 49 52 20 49 46 20 4e 4f  MSBUILDDIR IF NO
4db0: 54 20 45 58 49 53 54 20 22 25 56 49 53 55 41 4c  T EXIST "%VISUAL
4dc0: 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52  STUDIOMSBUILDDIR
4dd0: 25 5c 25 4d 53 42 55 49 4c 44 25 22 20 28 0d 0a  %\%MSBUILD%" (..
4de0: 20 20 20 20 25 5f 41 45 43 48 4f 25 20 46 69 6c      %_AECHO% Fil
4df0: 65 20 22 25 4d 53 42 55 49 4c 44 25 22 20 6e 6f  e "%MSBUILD%" no
4e00: 74 20 69 6e 20 56 69 73 75 61 6c 20 53 74 75 64  t in Visual Stud
4e10: 69 6f 20 64 69 72 65 63 74 6f 72 79 2c 20 75 6e  io directory, un
4e20: 73 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20  setting.....    
4e30: 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61  CALL :fn_UnsetVa
4e40: 72 69 61 62 6c 65 20 56 49 53 55 41 4c 53 54 55  riable VISUALSTU
4e50: 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 0d 0a 20  DIOMSBUILDDIR.. 
4e60: 20 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20     GOTO :EOF..  
4e70: 29 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20  )..  IF DEFINED 
4e80: 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42 55  VISUALSTUDIOMSBU
4e90: 49 4c 44 44 49 52 20 49 46 20 4e 4f 54 20 45 58  ILDDIR IF NOT EX
4ea0: 49 53 54 20 22 25 56 49 53 55 41 4c 53 54 55 44  IST "%VISUALSTUD
4eb0: 49 4f 4d 53 42 55 49 4c 44 44 49 52 25 5c 52 6f  IOMSBUILDDIR%\Ro
4ec0: 73 6c 79 6e 5c 25 43 53 43 25 22 20 28 0d 0a 20  slyn\%CSC%" (.. 
4ed0: 20 20 20 25 5f 41 45 43 48 4f 25 20 46 69 6c 65     %_AECHO% File
4ee0: 20 22 25 43 53 43 25 22 20 6e 6f 74 20 69 6e 20   "%CSC%" not in 
4ef0: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 64 69  Visual Studio di
4f00: 72 65 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69  rectory, unsetti
4f10: 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20  ng.....    CALL 
4f20: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
4f30: 65 20 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53  e VISUALSTUDIOMS
4f40: 42 55 49 4c 44 44 49 52 0d 0a 20 20 20 20 47 4f  BUILDDIR..    GO
4f50: 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20  TO :EOF..  )..  
4f60: 25 5f 41 45 43 48 4f 25 20 56 69 73 75 61 6c 20  %_AECHO% Visual 
4f70: 53 74 75 64 69 6f 20 64 69 72 65 63 74 6f 72 79  Studio directory
4f80: 20 22 25 56 49 53 55 41 4c 53 54 55 44 49 4f 4d   "%VISUALSTUDIOM
4f90: 53 42 55 49 4c 44 44 49 52 25 22 20 76 65 72 69  SBUILDDIR%" veri
4fa0: 66 69 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 3a 45  fied...  GOTO :E
4fb0: 4f 46 0d 0a 0d 0a 3a 66 6e 5f 43 68 65 63 6b 42  OF....:fn_CheckB
4fc0: 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 20 20 25  uildToolDir..  %
4fd0: 5f 41 45 43 48 4f 25 20 43 68 65 63 6b 69 6e 67  _AECHO% Checking
4fe0: 20 66 6f 72 20 62 75 69 6c 64 20 74 6f 6f 6c 20   for build tool 
4ff0: 64 69 72 65 63 74 6f 72 69 65 73 2e 2e 2e 0d 0a  directories.....
5000: 20 20 49 46 20 44 45 46 49 4e 45 44 20 56 49 53    IF DEFINED VIS
5010: 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44  UALSTUDIOMSBUILD
5020: 44 49 52 20 47 4f 54 4f 20 73 65 74 5f 76 69 73  DIR GOTO set_vis
5030: 75 61 6c 73 74 75 64 69 6f 5f 6d 73 62 75 69 6c  ualstudio_msbuil
5040: 64 5f 74 6f 6f 6c 73 0d 0a 20 20 49 46 20 44 45  d_tools..  IF DE
5050: 46 49 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52  FINED MSBUILDDIR
5060: 20 47 4f 54 4f 20 73 65 74 5f 6d 73 62 75 69 6c   GOTO set_msbuil
5070: 64 5f 74 6f 6f 6c 73 0d 0a 20 20 49 46 20 44 45  d_tools..  IF DE
5080: 46 49 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b 44  FINED FRAMEWORKD
5090: 49 52 20 47 4f 54 4f 20 73 65 74 5f 66 72 61 6d  IR GOTO set_fram
50a0: 65 77 6f 72 6b 5f 74 6f 6f 6c 73 0d 0a 20 20 25  ework_tools..  %
50b0: 5f 41 45 43 48 4f 25 20 4e 6f 20 62 75 69 6c 64  _AECHO% No build
50c0: 20 74 6f 6f 6c 20 64 69 72 65 63 74 6f 72 69 65   tool directorie
50d0: 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 47 4f 54 4f  s found...  GOTO
50e0: 20 3a 45 4f 46 0d 0a 20 20 3a 73 65 74 5f 76 69   :EOF..  :set_vi
50f0: 73 75 61 6c 73 74 75 64 69 6f 5f 6d 73 62 75 69  sualstudio_msbui
5100: 6c 64 5f 74 6f 6f 6c 73 0d 0a 20 20 25 5f 41 45  ld_tools..  %_AE
5110: 43 48 4f 25 20 55 73 69 6e 67 20 56 69 73 75 61  CHO% Using Visua
5120: 6c 20 53 74 75 64 69 6f 20 4d 53 42 75 69 6c 64  l Studio MSBuild
5130: 20 64 69 72 65 63 74 6f 72 79 20 22 25 56 49 53   directory "%VIS
5140: 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44  UALSTUDIOMSBUILD
5150: 44 49 52 25 22 2e 2e 2e 0d 0a 20 20 43 41 4c 4c  DIR%".....  CALL
5160: 20 3a 66 6e 5f 43 6f 70 79 56 61 72 69 61 62 6c   :fn_CopyVariabl
5170: 65 20 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53  e VISUALSTUDIOMS
5180: 42 55 49 4c 44 44 49 52 20 42 55 49 4c 44 54 4f  BUILDDIR BUILDTO
5190: 4f 4c 44 49 52 0d 0a 20 20 47 4f 54 4f 20 3a 45  OLDIR..  GOTO :E
51a0: 4f 46 0d 0a 20 20 3a 73 65 74 5f 6d 73 62 75 69  OF..  :set_msbui
51b0: 6c 64 5f 74 6f 6f 6c 73 0d 0a 20 20 25 5f 41 45  ld_tools..  %_AE
51c0: 43 48 4f 25 20 55 73 69 6e 67 20 4d 53 42 75 69  CHO% Using MSBui
51d0: 6c 64 20 64 69 72 65 63 74 6f 72 79 20 22 25 4d  ld directory "%M
51e0: 53 42 55 49 4c 44 44 49 52 25 22 2e 2e 2e 0d 0a  SBUILDDIR%".....
51f0: 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 6f 70 79 56    CALL :fn_CopyV
5200: 61 72 69 61 62 6c 65 20 4d 53 42 55 49 4c 44 44  ariable MSBUILDD
5210: 49 52 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 0d  IR BUILDTOOLDIR.
5220: 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20  .  GOTO :EOF..  
5230: 3a 73 65 74 5f 66 72 61 6d 65 77 6f 72 6b 5f 74  :set_framework_t
5240: 6f 6f 6c 73 0d 0a 20 20 25 5f 41 45 43 48 4f 25  ools..  %_AECHO%
5250: 20 55 73 69 6e 67 20 2e 4e 45 54 20 46 72 61 6d   Using .NET Fram
5260: 65 77 6f 72 6b 20 64 69 72 65 63 74 6f 72 79 20  ework directory 
5270: 22 25 46 52 41 4d 45 57 4f 52 4b 44 49 52 25 22  "%FRAMEWORKDIR%"
5280: 2e 2e 2e 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f  .....  CALL :fn_
5290: 43 6f 70 79 56 61 72 69 61 62 6c 65 20 46 52 41  CopyVariable FRA
52a0: 4d 45 57 4f 52 4b 44 49 52 20 42 55 49 4c 44 54  MEWORKDIR BUILDT
52b0: 4f 4f 4c 44 49 52 0d 0a 20 20 47 4f 54 4f 20 3a  OOLDIR..  GOTO :
52c0: 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 56 65 72 69 66  EOF....:fn_Verif
52d0: 79 42 75 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 20  yBuildToolDir.. 
52e0: 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20   IF NOT DEFINED 
52f0: 42 55 49 4c 44 54 4f 4f 4c 44 49 52 20 28 0d 0a  BUILDTOOLDIR (..
5300: 20 20 20 20 25 5f 41 45 43 48 4f 25 20 42 75 69      %_AECHO% Bui
5310: 6c 64 20 74 6f 6f 6c 20 64 69 72 65 63 74 6f 72  ld tool director
5320: 79 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64  y is not defined
5330: 2e 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46  ...    GOTO :EOF
5340: 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49  ..  )..  IF DEFI
5350: 4e 45 44 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52  NED BUILDTOOLDIR
5360: 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25   IF NOT EXIST "%
5370: 42 55 49 4c 44 54 4f 4f 4c 44 49 52 25 22 20 28  BUILDTOOLDIR%" (
5380: 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 42  ..    %_AECHO% B
5390: 75 69 6c 64 20 74 6f 6f 6c 20 64 69 72 65 63 74  uild tool direct
53a0: 6f 72 79 20 64 6f 65 73 20 6e 6f 74 20 65 78 69  ory does not exi
53b0: 73 74 2c 20 75 6e 73 65 74 74 69 6e 67 2e 2e 2e  st, unsetting...
53c0: 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55  ..    CALL :fn_U
53d0: 6e 73 65 74 56 61 72 69 61 62 6c 65 20 42 55 49  nsetVariable BUI
53e0: 4c 44 54 4f 4f 4c 44 49 52 0d 0a 20 20 20 20 47  LDTOOLDIR..    G
53f0: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20  OTO :EOF..  ).. 
5400: 20 49 46 20 44 45 46 49 4e 45 44 20 42 55 49 4c   IF DEFINED BUIL
5410: 44 54 4f 4f 4c 44 49 52 20 49 46 20 4e 4f 54 20  DTOOLDIR IF NOT 
5420: 45 58 49 53 54 20 22 25 42 55 49 4c 44 54 4f 4f  EXIST "%BUILDTOO
5430: 4c 44 49 52 25 5c 25 4d 53 42 55 49 4c 44 25 22  LDIR%\%MSBUILD%"
5440: 20 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25   (..    %_AECHO%
5450: 20 46 69 6c 65 20 22 25 4d 53 42 55 49 4c 44 25   File "%MSBUILD%
5460: 22 20 6e 6f 74 20 69 6e 20 62 75 69 6c 64 20 74  " not in build t
5470: 6f 6f 6c 20 64 69 72 65 63 74 6f 72 79 2c 20 75  ool directory, u
5480: 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20  nsetting.....   
5490: 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56   CALL :fn_UnsetV
54a0: 61 72 69 61 62 6c 65 20 42 55 49 4c 44 54 4f 4f  ariable BUILDTOO
54b0: 4c 44 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a  LDIR..    GOTO :
54c0: 45 4f 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44  EOF..  )..  IF D
54d0: 45 46 49 4e 45 44 20 42 55 49 4c 44 54 4f 4f 4c  EFINED BUILDTOOL
54e0: 44 49 52 20 49 46 20 4e 4f 54 20 45 58 49 53 54  DIR IF NOT EXIST
54f0: 20 22 25 42 55 49 4c 44 54 4f 4f 4c 44 49 52 25   "%BUILDTOOLDIR%
5500: 5c 25 43 53 43 25 22 20 49 46 20 4e 4f 54 20 45  \%CSC%" IF NOT E
5510: 58 49 53 54 20 22 25 42 55 49 4c 44 54 4f 4f 4c  XIST "%BUILDTOOL
5520: 44 49 52 25 5c 52 6f 73 6c 79 6e 5c 25 43 53 43  DIR%\Roslyn\%CSC
5530: 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43 48  %" (..    %_AECH
5540: 4f 25 20 46 69 6c 65 20 22 25 43 53 43 25 22 20  O% File "%CSC%" 
5550: 6e 6f 74 20 69 6e 20 62 75 69 6c 64 20 74 6f 6f  not in build too
5560: 6c 20 64 69 72 65 63 74 6f 72 79 2c 20 75 6e 73  l directory, uns
5570: 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43  etting.....    C
5580: 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72  ALL :fn_UnsetVar
5590: 69 61 62 6c 65 20 42 55 49 4c 44 54 4f 4f 4c 44  iable BUILDTOOLD
55a0: 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  IR..    GOTO :EO
55b0: 46 0d 0a 20 20 29 0d 0a 20 20 25 5f 41 45 43 48  F..  )..  %_AECH
55c0: 4f 25 20 42 75 69 6c 64 20 74 6f 6f 6c 20 64 69  O% Build tool di
55d0: 72 65 63 74 6f 72 79 20 22 25 42 55 49 4c 44 54  rectory "%BUILDT
55e0: 4f 4f 4c 44 49 52 25 22 20 76 65 72 69 66 69 65  OOLDIR%" verifie
55f0: 64 2e 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  d...  GOTO :EOF.
5600: 0a 0d 0a 3a 66 6e 5f 56 65 72 69 66 79 44 6f 74  ...:fn_VerifyDot
5610: 4e 65 74 43 6f 72 65 0d 0a 20 20 46 4f 52 20 25  NetCore..  FOR %
5620: 25 54 20 49 4e 20 28 25 44 4f 54 4e 45 54 25 29  %T IN (%DOTNET%)
5630: 20 44 4f 20 28 0d 0a 20 20 20 20 53 45 54 20 25   DO (..    SET %
5640: 25 54 5f 50 41 54 48 3d 25 25 7e 64 70 24 50 41  %T_PATH=%%~dp$PA
5650: 54 48 3a 54 0d 0a 20 20 29 0d 0a 20 20 49 46 20  TH:T..  )..  IF 
5660: 4e 4f 54 20 44 45 46 49 4e 45 44 20 25 44 4f 54  NOT DEFINED %DOT
5670: 4e 45 54 25 5f 50 41 54 48 20 28 0d 0a 20 20 20  NET%_PATH (..   
5680: 20 45 43 48 4f 20 54 68 65 20 2e 4e 45 54 20 43   ECHO The .NET C
5690: 6f 72 65 20 65 78 65 63 75 74 61 62 6c 65 20 22  ore executable "
56a0: 25 44 4f 54 4e 45 54 25 22 20 69 73 20 72 65 71  %DOTNET%" is req
56b0: 75 69 72 65 64 20 74 6f 20 62 65 20 69 6e 20 74  uired to be in t
56c0: 68 65 20 50 41 54 48 2e 0d 0a 20 20 20 20 43 41  he PATH...    CA
56d0: 4c 4c 20 3a 66 6e 5f 53 65 74 45 72 72 6f 72 4c  LL :fn_SetErrorL
56e0: 65 76 65 6c 0d 0a 20 20 20 20 47 4f 54 4f 20 3a  evel..    GOTO :
56f0: 45 4f 46 0d 0a 20 20 29 0d 0a 20 20 47 4f 54 4f  EOF..  )..  GOTO
5700: 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 55 6e 71   :EOF....:fn_Unq
5710: 75 6f 74 65 56 61 72 69 61 62 6c 65 0d 0a 20 20  uoteVariable..  
5720: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 25  IF NOT DEFINED %
5730: 31 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 53  1 GOTO :EOF..  S
5740: 45 54 4c 4f 43 41 4c 0d 0a 20 20 53 45 54 20 5f  ETLOCAL..  SET _
5750: 5f 45 43 48 4f 5f 43 4d 44 3d 45 43 48 4f 20 25  _ECHO_CMD=ECHO %
5760: 25 25 31 25 25 0d 0a 20 20 46 4f 52 20 2f 46 20  %%1%%..  FOR /F 
5770: 22 64 65 6c 69 6d 73 3d 22 20 25 25 56 20 49 4e  "delims=" %%V IN
5780: 20 28 27 25 5f 5f 45 43 48 4f 5f 43 4d 44 25 27   ('%__ECHO_CMD%'
5790: 29 20 44 4f 20 28 0d 0a 20 20 20 20 53 45 54 20  ) DO (..    SET 
57a0: 56 41 4c 55 45 3d 25 25 56 0d 0a 20 20 29 0d 0a  VALUE=%%V..  )..
57b0: 20 20 53 45 54 20 56 41 4c 55 45 3d 25 56 41 4c    SET VALUE=%VAL
57c0: 55 45 3a 22 3d 25 0d 0a 20 20 52 45 4d 20 22 0d  UE:"=%..  REM ".
57d0: 0a 20 20 45 4e 44 4c 4f 43 41 4c 20 26 26 20 53  .  ENDLOCAL && S
57e0: 45 54 20 25 31 3d 25 56 41 4c 55 45 25 0d 0a 20  ET %1=%VALUE%.. 
57f0: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66   GOTO :EOF....:f
5800: 6e 5f 50 72 65 70 65 6e 64 54 6f 50 61 74 68 0d  n_PrependToPath.
5810: 0a 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45  .  IF NOT DEFINE
5820: 44 20 25 31 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  D %1 GOTO :EOF..
5830: 20 20 53 45 54 4c 4f 43 41 4c 0d 0a 20 20 53 45    SETLOCAL..  SE
5840: 54 20 5f 5f 45 43 48 4f 5f 43 4d 44 3d 45 43 48  T __ECHO_CMD=ECH
5850: 4f 20 25 25 25 31 25 25 0d 0a 20 20 46 4f 52 20  O %%%1%%..  FOR 
5860: 2f 46 20 22 64 65 6c 69 6d 73 3d 22 20 25 25 56  /F "delims=" %%V
5870: 20 49 4e 20 28 27 25 5f 5f 45 43 48 4f 5f 43 4d   IN ('%__ECHO_CM
5880: 44 25 27 29 20 44 4f 20 28 0d 0a 20 20 20 20 53  D%') DO (..    S
5890: 45 54 20 56 41 4c 55 45 3d 25 25 56 0d 0a 20 20  ET VALUE=%%V..  
58a0: 29 0d 0a 20 20 53 45 54 20 56 41 4c 55 45 3d 25  )..  SET VALUE=%
58b0: 56 41 4c 55 45 3a 22 3d 25 0d 0a 20 20 52 45 4d  VALUE:"=%..  REM
58c0: 20 22 0d 0a 20 20 45 4e 44 4c 4f 43 41 4c 20 26   "..  ENDLOCAL &
58d0: 26 20 53 45 54 20 50 41 54 48 3d 25 56 41 4c 55  & SET PATH=%VALU
58e0: 45 25 3b 25 50 41 54 48 25 0d 0a 20 20 47 4f 54  E%;%PATH%..  GOT
58f0: 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 43 6f  O :EOF....:fn_Co
5900: 70 79 56 61 72 69 61 62 6c 65 0d 0a 20 20 49 46  pyVariable..  IF
5910: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 25 31 20   NOT DEFINED %1 
5920: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20  GOTO :EOF..  IF 
5930: 22 25 32 22 20 3d 3d 20 22 22 20 47 4f 54 4f 20  "%2" == "" GOTO 
5940: 3a 45 4f 46 0d 0a 20 20 53 45 54 4c 4f 43 41 4c  :EOF..  SETLOCAL
5950: 0d 0a 20 20 53 45 54 20 5f 5f 45 43 48 4f 5f 43  ..  SET __ECHO_C
5960: 4d 44 3d 45 43 48 4f 20 25 25 25 31 25 25 0d 0a  MD=ECHO %%%1%%..
5970: 20 20 46 4f 52 20 2f 46 20 22 64 65 6c 69 6d 73    FOR /F "delims
5980: 3d 22 20 25 25 56 20 49 4e 20 28 27 25 5f 5f 45  =" %%V IN ('%__E
5990: 43 48 4f 5f 43 4d 44 25 27 29 20 44 4f 20 28 0d  CHO_CMD%') DO (.
59a0: 0a 20 20 20 20 53 45 54 20 56 41 4c 55 45 3d 25  .    SET VALUE=%
59b0: 25 56 0d 0a 20 20 29 0d 0a 20 20 45 4e 44 4c 4f  %V..  )..  ENDLO
59c0: 43 41 4c 20 26 26 20 53 45 54 20 25 32 3d 25 56  CAL && SET %2=%V
59d0: 41 4c 55 45 25 0d 0a 20 20 47 4f 54 4f 20 3a 45  ALUE%..  GOTO :E
59e0: 4f 46 0d 0a 0d 0a 3a 66 6e 5f 55 6e 73 65 74 56  OF....:fn_UnsetV
59f0: 61 72 69 61 62 6c 65 0d 0a 20 20 53 45 54 4c 4f  ariable..  SETLO
5a00: 43 41 4c 0d 0a 20 20 53 45 54 20 56 41 4c 55 45  CAL..  SET VALUE
5a10: 3d 25 31 0d 0a 20 20 49 46 20 44 45 46 49 4e 45  =%1..  IF DEFINE
5a20: 44 20 56 41 4c 55 45 20 28 0d 0a 20 20 20 20 53  D VALUE (..    S
5a30: 45 54 20 56 41 4c 55 45 3d 0d 0a 20 20 20 20 45  ET VALUE=..    E
5a40: 4e 44 4c 4f 43 41 4c 0d 0a 20 20 20 20 53 45 54  NDLOCAL..    SET
5a50: 20 25 56 41 4c 55 45 25 3d 0d 0a 20 20 29 20 45   %VALUE%=..  ) E
5a60: 4c 53 45 20 28 0d 0a 20 20 20 20 45 4e 44 4c 4f  LSE (..    ENDLO
5a70: 43 41 4c 0d 0a 20 20 29 0d 0a 20 20 43 41 4c 4c  CAL..  )..  CALL
5a80: 20 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f 72 4c   :fn_ResetErrorL
5a90: 65 76 65 6c 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f  evel..  GOTO :EO
5aa0: 46 0d 0a 0d 0a 3a 66 6e 5f 52 65 73 65 74 45 72  F....:fn_ResetEr
5ab0: 72 6f 72 4c 65 76 65 6c 0d 0a 20 20 56 45 52 49  rorLevel..  VERI
5ac0: 46 59 20 3e 20 4e 55 4c 0d 0a 20 20 47 4f 54 4f  FY > NUL..  GOTO
5ad0: 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 53 65 74   :EOF....:fn_Set
5ae0: 45 72 72 6f 72 4c 65 76 65 6c 0d 0a 20 20 56 45  ErrorLevel..  VE
5af0: 52 49 46 59 20 4d 41 59 42 45 20 32 3e 20 4e 55  RIFY MAYBE 2> NU
5b00: 4c 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  L..  GOTO :EOF..
5b10: 0d 0a 3a 75 73 61 67 65 0d 0a 20 20 45 43 48 4f  ..:usage..  ECHO
5b20: 2e 0d 0a 20 20 45 43 48 4f 20 55 73 61 67 65 3a  ...  ECHO Usage:
5b30: 20 25 7e 6e 78 30 20 5b 63 6f 6e 66 69 67 75 72   %~nx0 [configur
5b40: 61 74 69 6f 6e 5d 20 5b 70 6c 61 74 66 6f 72 6d  ation] [platform
5b50: 5d 0d 0a 20 20 45 43 48 4f 2e 0d 0a 20 20 47 4f  ]..  ECHO...  GO
5b60: 54 4f 20 65 72 72 6f 72 73 0d 0a 0d 0a 3a 65 72  TO errors....:er
5b70: 72 6f 72 73 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e  rors..  CALL :fn
5b80: 5f 53 65 74 45 72 72 6f 72 4c 65 76 65 6c 0d 0a  _SetErrorLevel..
5b90: 20 20 45 4e 44 4c 4f 43 41 4c 0d 0a 20 20 45 43    ENDLOCAL..  EC
5ba0: 48 4f 2e 0d 0a 20 20 45 43 48 4f 20 42 75 69 6c  HO...  ECHO Buil
5bb0: 64 20 66 61 69 6c 75 72 65 2c 20 65 72 72 6f 72  d failure, error
5bc0: 73 20 77 65 72 65 20 65 6e 63 6f 75 6e 74 65 72  s were encounter
5bd0: 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 65 6e 64 5f  ed...  GOTO end_
5be0: 6f 66 5f 66 69 6c 65 0d 0a 0d 0a 3a 6e 6f 5f 65  of_file....:no_e
5bf0: 72 72 6f 72 73 0d 0a 20 20 43 41 4c 4c 20 3a 66  rrors..  CALL :f
5c00: 6e 5f 52 65 73 65 74 45 72 72 6f 72 4c 65 76 65  n_ResetErrorLeve
5c10: 6c 0d 0a 20 20 45 4e 44 4c 4f 43 41 4c 0d 0a 20  l..  ENDLOCAL.. 
5c20: 20 45 43 48 4f 2e 0d 0a 20 20 45 43 48 4f 20 42   ECHO...  ECHO B
5c30: 75 69 6c 64 20 73 75 63 63 65 73 73 2c 20 6e 6f  uild success, no
5c40: 20 65 72 72 6f 72 73 20 77 65 72 65 20 65 6e 63   errors were enc
5c50: 6f 75 6e 74 65 72 65 64 2e 0d 0a 20 20 47 4f 54  ountered...  GOT
5c60: 4f 20 65 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 0d  O end_of_file...
5c70: 0a 3a 65 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 25  .:end_of_file..%
5c80: 5f 5f 45 43 48 4f 25 20 45 58 49 54 20 2f 42 20  __ECHO% EXIT /B 
5c90: 25 45 52 52 4f 52 4c 45 56 45 4c 25 0d 0a        %ERRORLEVEL%..