System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact bb5084b00e03c2a9bd510106249b8025a71734d8:


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: 43 53 43 20 28 0d 0a 20 20 53 45 54 20 43 53 43  CSC (..  SET CSC
0c80: 3d 63 73 63 2e 65 78 65 0d 0a 29 0d 0a 0d 0a 25  =csc.exe..)....%
0c90: 5f 56 45 43 48 4f 25 20 43 73 63 20 3d 20 27 25  _VECHO% Csc = '%
0ca0: 43 53 43 25 27 0d 0a 0d 0a 52 45 4d 0d 0a 52 45  CSC%'....REM..RE
0cb0: 4d 20 54 4f 44 4f 3a 20 57 68 65 6e 20 74 68 65  M TODO: When the
0cc0: 20 6e 65 78 74 20 76 65 72 73 69 6f 6e 20 6f 66   next version of
0cd0: 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 69   Visual Studio i
0ce0: 73 20 72 65 6c 65 61 73 65 64 2c 20 74 68 69 73  s released, this
0cf0: 20 73 65 63 74 69 6f 6e 0d 0a 52 45 4d 20 20 20   section..REM   
0d00: 20 20 20 20 6d 61 79 20 6e 65 65 64 20 75 70 64      may need upd
0d10: 61 74 69 6e 67 2e 0d 0a 52 45 4d 0d 0a 49 46 20  ating...REM..IF 
0d20: 44 45 46 49 4e 45 44 20 4e 45 54 46 58 32 30 4f  DEFINED NETFX20O
0d30: 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  NLY (..  %_AECHO
0d40: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
0d50: 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72  e of the .NET Fr
0d60: 61 6d 65 77 6f 72 6b 20 32 2e 30 2e 2e 2e 0d 0a  amework 2.0.....
0d70: 20 20 53 45 54 20 59 45 41 52 3d 32 30 30 35 0d    SET YEAR=2005.
0d80: 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63  .  CALL :fn_Chec
0d90: 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76 32  kFrameworkDir v2
0da0: 2e 30 2e 35 30 37 32 37 0d 0a 20 20 47 4f 54 4f  .0.50727..  GOTO
0db0: 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f 6c   setup_buildTool
0dc0: 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44 45 46  Dir..)....IF DEF
0dd0: 49 4e 45 44 20 4e 45 54 46 58 33 35 4f 4e 4c 59  INED NETFX35ONLY
0de0: 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 46   (..  %_AECHO% F
0df0: 6f 72 63 69 6e 67 20 74 68 65 20 75 73 65 20 6f  orcing the use o
0e00: 66 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65  f the .NET Frame
0e10: 77 6f 72 6b 20 33 2e 35 2e 2e 2e 0d 0a 20 20 53  work 3.5.....  S
0e20: 45 54 20 59 45 41 52 3d 32 30 30 38 0d 0a 20 20  ET YEAR=2008..  
0e30: 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72  CALL :fn_CheckFr
0e40: 61 6d 65 77 6f 72 6b 44 69 72 20 76 33 2e 35 0d  ameworkDir v3.5.
0e50: 0a 20 20 47 4f 54 4f 20 73 65 74 75 70 5f 62 75  .  GOTO setup_bu
0e60: 69 6c 64 54 6f 6f 6c 44 69 72 0d 0a 29 0d 0a 0d  ildToolDir..)...
0e70: 0a 49 46 20 44 45 46 49 4e 45 44 20 4e 45 54 46  .IF DEFINED NETF
0e80: 58 34 30 4f 4e 4c 59 20 28 0d 0a 20 20 25 5f 41  X40ONLY (..  %_A
0e90: 45 43 48 4f 25 20 46 6f 72 63 69 6e 67 20 74 68  ECHO% Forcing th
0ea0: 65 20 75 73 65 20 6f 66 20 74 68 65 20 2e 4e 45  e use of the .NE
0eb0: 54 20 46 72 61 6d 65 77 6f 72 6b 20 34 2e 30 2e  T Framework 4.0.
0ec0: 2e 2e 0d 0a 20 20 53 45 54 20 59 45 41 52 3d 32  ....  SET YEAR=2
0ed0: 30 31 30 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f  010..  CALL :fn_
0ee0: 43 68 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69  CheckFrameworkDi
0ef0: 72 20 76 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20  r v4.0.30319..  
0f00: 47 4f 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64  GOTO setup_build
0f10: 54 6f 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46  ToolDir..)....IF
0f20: 20 44 45 46 49 4e 45 44 20 4e 45 54 46 58 34 35   DEFINED NETFX45
0f30: 4f 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48  ONLY (..  %_AECH
0f40: 4f 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75  O% Forcing the u
0f50: 73 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46  se of the .NET F
0f60: 72 61 6d 65 77 6f 72 6b 20 34 2e 35 2e 2e 2e 0d  ramework 4.5....
0f70: 0a 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 32  .  SET YEAR=2012
0f80: 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65  ..  CALL :fn_Che
0f90: 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76  ckFrameworkDir v
0fa0: 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20 47 4f 54  4.0.30319..  GOT
0fb0: 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f  O setup_buildToo
0fc0: 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44 45  lDir..)....IF DE
0fd0: 46 49 4e 45 44 20 4e 45 54 46 58 34 35 31 4f 4e  FINED NETFX451ON
0fe0: 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f 25  LY (..  %_AECHO%
0ff0: 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73 65   Forcing the use
1000: 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72 61   of the .NET Fra
1010: 6d 65 77 6f 72 6b 20 34 2e 35 2e 31 2e 2e 2e 0d  mework 4.5.1....
1020: 0a 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 33  .  SET YEAR=2013
1030: 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65  ..  CALL :fn_Che
1040: 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76  ckFrameworkDir v
1050: 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41 4c  4.0.30319..  CAL
1060: 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69  L :fn_CheckMsBui
1070: 6c 64 44 69 72 20 31 32 2e 30 0d 0a 20 20 47 4f  ldDir 12.0..  GO
1080: 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f  TO setup_buildTo
1090: 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44  olDir..)....IF D
10a0: 45 46 49 4e 45 44 20 4e 45 54 46 58 34 35 32 4f  EFINED NETFX452O
10b0: 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  NLY (..  %_AECHO
10c0: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
10d0: 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72  e of the .NET Fr
10e0: 61 6d 65 77 6f 72 6b 20 34 2e 35 2e 32 2e 2e 2e  amework 4.5.2...
10f0: 0d 0a 20 20 53 45 54 20 59 45 41 52 3d 32 30 31  ..  SET YEAR=201
1100: 33 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68  3..  CALL :fn_Ch
1110: 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20  eckFrameworkDir 
1120: 76 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41  v4.0.30319..  CA
1130: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75  LL :fn_CheckMsBu
1140: 69 6c 64 44 69 72 20 31 32 2e 30 0d 0a 20 20 47  ildDir 12.0..  G
1150: 4f 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54  OTO setup_buildT
1160: 6f 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20  oolDir..)....IF 
1170: 44 45 46 49 4e 45 44 20 4e 45 54 46 58 34 36 4f  DEFINED NETFX46O
1180: 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  NLY (..  %_AECHO
1190: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
11a0: 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72  e of the .NET Fr
11b0: 61 6d 65 77 6f 72 6b 20 34 2e 36 2e 2e 2e 0d 0a  amework 4.6.....
11c0: 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 35 0d    SET YEAR=2015.
11d0: 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63  .  CALL :fn_Chec
11e0: 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76 34  kFrameworkDir v4
11f0: 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41 4c 4c  .0.30319..  CALL
1200: 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69 6c   :fn_CheckMsBuil
1210: 64 44 69 72 20 31 34 2e 30 0d 0a 20 20 47 4f 54  dDir 14.0..  GOT
1220: 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f 6f  O setup_buildToo
1230: 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44 45  lDir..)....IF DE
1240: 46 49 4e 45 44 20 4e 45 54 46 58 34 36 31 4f 4e  FINED NETFX461ON
1250: 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f 25  LY (..  %_AECHO%
1260: 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73 65   Forcing the use
1270: 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72 61   of the .NET Fra
1280: 6d 65 77 6f 72 6b 20 34 2e 36 2e 31 2e 2e 2e 0d  mework 4.6.1....
1290: 0a 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 35  .  SET YEAR=2015
12a0: 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65  ..  CALL :fn_Che
12b0: 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76  ckFrameworkDir v
12c0: 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41 4c  4.0.30319..  CAL
12d0: 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69  L :fn_CheckMsBui
12e0: 6c 64 44 69 72 20 31 34 2e 30 0d 0a 20 20 47 4f  ldDir 14.0..  GO
12f0: 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54 6f  TO setup_buildTo
1300: 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20 44  olDir..)....IF D
1310: 45 46 49 4e 45 44 20 4e 45 54 46 58 34 36 32 4f  EFINED NETFX462O
1320: 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  NLY (..  %_AECHO
1330: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
1340: 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72  e of the .NET Fr
1350: 61 6d 65 77 6f 72 6b 20 34 2e 36 2e 32 2e 2e 2e  amework 4.6.2...
1360: 0d 0a 20 20 53 45 54 20 59 45 41 52 3d 32 30 31  ..  SET YEAR=201
1370: 35 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68  5..  CALL :fn_Ch
1380: 65 63 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20  eckFrameworkDir 
1390: 76 34 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41  v4.0.30319..  CA
13a0: 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75  LL :fn_CheckMsBu
13b0: 69 6c 64 44 69 72 20 31 34 2e 30 0d 0a 20 20 47  ildDir 14.0..  G
13c0: 4f 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54  OTO setup_buildT
13d0: 6f 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 49 46 20  oolDir..)....IF 
13e0: 44 45 46 49 4e 45 44 20 4e 45 54 46 58 34 37 4f  DEFINED NETFX47O
13f0: 4e 4c 59 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  NLY (..  %_AECHO
1400: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
1410: 65 20 6f 66 20 74 68 65 20 2e 4e 45 54 20 46 72  e of the .NET Fr
1420: 61 6d 65 77 6f 72 6b 20 34 2e 37 2e 2e 2e 0d 0a  amework 4.7.....
1430: 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 37 0d    SET YEAR=2017.
1440: 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63  .  CALL :fn_Chec
1450: 6b 46 72 61 6d 65 77 6f 72 6b 44 69 72 20 76 34  kFrameworkDir v4
1460: 2e 30 2e 33 30 33 31 39 0d 0a 20 20 43 41 4c 4c  .0.30319..  CALL
1470: 20 3a 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69 6c   :fn_CheckMsBuil
1480: 64 44 69 72 20 31 34 2e 30 0d 0a 20 20 43 41 4c  dDir 14.0..  CAL
1490: 4c 20 3a 66 6e 5f 43 68 65 63 6b 56 69 73 75 61  L :fn_CheckVisua
14a0: 6c 53 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69  lStudioMsBuildDi
14b0: 72 20 31 35 2e 30 20 31 35 2e 30 0d 0a 20 20 47  r 15.0 15.0..  G
14c0: 4f 54 4f 20 73 65 74 75 70 5f 62 75 69 6c 64 54  OTO setup_buildT
14d0: 6f 6f 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 52 45 4d  oolDir..)....REM
14e0: 0d 0a 52 45 4d 20 54 4f 44 4f 3a 20 57 68 65 6e  ..REM TODO: When
14f0: 20 74 68 65 20 6e 65 78 74 20 76 65 72 73 69 6f   the next versio
1500: 6e 20 6f 66 20 56 69 73 75 61 6c 20 53 74 75 64  n of Visual Stud
1510: 69 6f 20 61 6e 64 2f 6f 72 20 4d 53 42 75 69 6c  io and/or MSBuil
1520: 64 20 69 73 20 72 65 6c 65 61 73 65 64 2c 0d 0a  d is released,..
1530: 52 45 4d 20 20 20 20 20 20 20 74 68 69 73 20 73  REM       this s
1540: 65 63 74 69 6f 6e 20 6d 61 79 20 6e 65 65 64 20  ection may need 
1550: 75 70 64 61 74 69 6e 67 2e 0d 0a 52 45 4d 0d 0a  updating...REM..
1560: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 56  IF NOT DEFINED V
1570: 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49  ISUALSTUDIOMSBUI
1580: 4c 44 44 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20  LDDIR (..  CALL 
1590: 3a 66 6e 5f 43 68 65 63 6b 56 69 73 75 61 6c 53  :fn_CheckVisualS
15a0: 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69 72 20  tudioMsBuildDir 
15b0: 31 35 2e 30 20 31 35 2e 30 0d 0a 20 20 49 46 20  15.0 15.0..  IF 
15c0: 44 45 46 49 4e 45 44 20 56 49 53 55 41 4c 53 54  DEFINED VISUALST
15d0: 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 20 28  UDIOMSBUILDDIR (
15e0: 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46  ..    IF NOT DEF
15f0: 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20 20 20  INED YEAR (..   
1600: 20 20 20 53 45 54 20 59 45 41 52 3d 32 30 31 37     SET YEAR=2017
1610: 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a 29 0d  ..    )..  )..).
1620: 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 54 4f 44 4f  ...REM..REM TODO
1630: 3a 20 57 68 65 6e 20 74 68 65 20 6e 65 78 74 20  : When the next 
1640: 76 65 72 73 69 6f 6e 20 6f 66 20 4d 53 42 75 69  version of MSBui
1650: 6c 64 20 69 73 20 72 65 6c 65 61 73 65 64 2c 20  ld is released, 
1660: 74 68 69 73 20 73 65 63 74 69 6f 6e 20 6d 61 79  this section may
1670: 20 6e 65 65 64 0d 0a 52 45 4d 20 20 20 20 20 20   need..REM      
1680: 20 75 70 64 61 74 69 6e 67 2e 0d 0a 52 45 4d 0d   updating...REM.
1690: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
16a0: 4d 53 42 55 49 4c 44 44 49 52 20 28 0d 0a 20 20  MSBUILDDIR (..  
16b0: 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 4d 73  CALL :fn_CheckMs
16c0: 42 75 69 6c 64 44 69 72 20 31 34 2e 30 0d 0a 20  BuildDir 14.0.. 
16d0: 20 49 46 20 44 45 46 49 4e 45 44 20 4d 53 42 55   IF DEFINED MSBU
16e0: 49 4c 44 44 49 52 20 28 0d 0a 20 20 20 20 49 46  ILDDIR (..    IF
16f0: 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 59 45 41   NOT DEFINED YEA
1700: 52 20 28 0d 0a 20 20 20 20 20 20 53 45 54 20 59  R (..      SET Y
1710: 45 41 52 3d 32 30 31 35 0d 0a 20 20 20 20 29 0d  EAR=2015..    ).
1720: 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 49 46 20 4e 4f  .  )..)....IF NO
1730: 54 20 44 45 46 49 4e 45 44 20 4d 53 42 55 49 4c  T DEFINED MSBUIL
1740: 44 44 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a  DDIR (..  CALL :
1750: 66 6e 5f 43 68 65 63 6b 4d 73 42 75 69 6c 64 44  fn_CheckMsBuildD
1760: 69 72 20 31 32 2e 30 0d 0a 20 20 49 46 20 44 45  ir 12.0..  IF DE
1770: 46 49 4e 45 44 20 4d 53 42 55 49 4c 44 44 49 52  FINED MSBUILDDIR
1780: 20 28 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 44   (..    IF NOT D
1790: 45 46 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20  EFINED YEAR (.. 
17a0: 20 20 20 20 20 53 45 54 20 59 45 41 52 3d 32 30       SET YEAR=20
17b0: 31 33 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a  13..    )..  )..
17c0: 29 0d 0a 0d 0a 52 45 4d 0d 0a 52 45 4d 20 54 4f  )....REM..REM TO
17d0: 44 4f 3a 20 57 68 65 6e 20 74 68 65 20 6e 65 78  DO: When the nex
17e0: 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 56 69 73  t version of Vis
17f0: 75 61 6c 20 53 74 75 64 69 6f 20 69 73 20 72 65  ual Studio is re
1800: 6c 65 61 73 65 64 2c 20 74 68 69 73 20 73 65 63  leased, this sec
1810: 74 69 6f 6e 0d 0a 52 45 4d 20 20 20 20 20 20 20  tion..REM       
1820: 6d 61 79 20 6e 65 65 64 20 75 70 64 61 74 69 6e  may need updatin
1830: 67 2e 0d 0a 52 45 4d 0d 0a 49 46 20 4e 4f 54 20  g...REM..IF NOT 
1840: 44 45 46 49 4e 45 44 20 46 52 41 4d 45 57 4f 52  DEFINED FRAMEWOR
1850: 4b 44 49 52 20 28 0d 0a 20 20 43 41 4c 4c 20 3a  KDIR (..  CALL :
1860: 66 6e 5f 43 68 65 63 6b 46 72 61 6d 65 77 6f 72  fn_CheckFramewor
1870: 6b 44 69 72 20 76 34 2e 30 2e 33 30 33 31 39 0d  kDir v4.0.30319.
1880: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 46 52  .  IF DEFINED FR
1890: 41 4d 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20  AMEWORKDIR (..  
18a0: 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44    IF NOT DEFINED
18b0: 20 59 45 41 52 20 28 0d 0a 20 20 20 20 20 20 53   YEAR (..      S
18c0: 45 54 20 59 45 41 52 3d 32 30 31 30 0d 0a 20 20  ET YEAR=2010..  
18d0: 20 20 29 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 49    )..  )..)....I
18e0: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 46 52  F NOT DEFINED FR
18f0: 41 4d 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20  AMEWORKDIR (..  
1900: 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72  CALL :fn_CheckFr
1910: 61 6d 65 77 6f 72 6b 44 69 72 20 76 33 2e 35 0d  ameworkDir v3.5.
1920: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 46 52  .  IF DEFINED FR
1930: 41 4d 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20  AMEWORKDIR (..  
1940: 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44    IF NOT DEFINED
1950: 20 59 45 41 52 20 28 0d 0a 20 20 20 20 20 20 53   YEAR (..      S
1960: 45 54 20 59 45 41 52 3d 32 30 30 38 0d 0a 20 20  ET YEAR=2008..  
1970: 20 20 29 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 49    )..  )..)....I
1980: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 46 52  F NOT DEFINED FR
1990: 41 4d 45 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20  AMEWORKDIR (..  
19a0: 43 41 4c 4c 20 3a 66 6e 5f 43 68 65 63 6b 46 72  CALL :fn_CheckFr
19b0: 61 6d 65 77 6f 72 6b 44 69 72 20 76 32 2e 30 2e  ameworkDir v2.0.
19c0: 35 30 37 32 37 0d 0a 20 20 49 46 20 44 45 46 49  50727..  IF DEFI
19d0: 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b 44 49 52  NED FRAMEWORKDIR
19e0: 20 28 0d 0a 20 20 20 20 49 46 20 4e 4f 54 20 44   (..    IF NOT D
19f0: 45 46 49 4e 45 44 20 59 45 41 52 20 28 0d 0a 20  EFINED YEAR (.. 
1a00: 20 20 20 20 20 53 45 54 20 59 45 41 52 3d 32 30       SET YEAR=20
1a10: 30 35 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d 0a  05..    )..  )..
1a20: 29 0d 0a 0d 0a 3a 73 65 74 75 70 5f 62 75 69 6c  )....:setup_buil
1a30: 64 54 6f 6f 6c 44 69 72 0d 0a 0d 0a 49 46 20 44  dToolDir....IF D
1a40: 45 46 49 4e 45 44 20 42 55 49 4c 44 54 4f 4f 4c  EFINED BUILDTOOL
1a50: 44 49 52 20 28 0d 0a 20 20 25 5f 41 45 43 48 4f  DIR (..  %_AECHO
1a60: 25 20 46 6f 72 63 69 6e 67 20 74 68 65 20 75 73  % Forcing the us
1a70: 65 20 6f 66 20 62 75 69 6c 64 20 74 6f 6f 6c 20  e of build tool 
1a80: 64 69 72 65 63 74 6f 72 79 20 22 25 42 55 49 4c  directory "%BUIL
1a90: 44 54 4f 4f 4c 44 49 52 25 22 2e 2e 2e 0d 0a 29  DTOOLDIR%".....)
1aa0: 20 45 4c 53 45 20 28 0d 0a 20 20 43 41 4c 4c 20   ELSE (..  CALL 
1ab0: 3a 66 6e 5f 43 68 65 63 6b 42 75 69 6c 64 54 6f  :fn_CheckBuildTo
1ac0: 6f 6c 44 69 72 0d 0a 20 20 43 41 4c 4c 20 3a 66  olDir..  CALL :f
1ad0: 6e 5f 56 65 72 69 66 79 42 75 69 6c 64 54 6f 6f  n_VerifyBuildToo
1ae0: 6c 44 69 72 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43  lDir..)....%_VEC
1af0: 48 4f 25 20 59 65 61 72 20 3d 20 27 25 59 45 41  HO% Year = '%YEA
1b00: 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20 46 72  R%'..%_VECHO% Fr
1b10: 61 6d 65 77 6f 72 6b 44 69 72 20 3d 20 27 25 46  ameworkDir = '%F
1b20: 52 41 4d 45 57 4f 52 4b 44 49 52 25 27 0d 0a 25  RAMEWORKDIR%'..%
1b30: 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c 64 44  _VECHO% MsBuildD
1b40: 69 72 20 3d 20 27 25 4d 53 42 55 49 4c 44 44 49  ir = '%MSBUILDDI
1b50: 52 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20 56 69  R%'..%_VECHO% Vi
1b60: 73 75 61 6c 53 74 75 64 69 6f 4d 73 42 75 69 6c  sualStudioMsBuil
1b70: 64 44 69 72 20 3d 20 27 25 56 49 53 55 41 4c 53  dDir = '%VISUALS
1b80: 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 25  TUDIOMSBUILDDIR%
1b90: 27 0d 0a 25 5f 56 45 43 48 4f 25 20 42 75 69 6c  '..%_VECHO% Buil
1ba0: 64 54 6f 6f 6c 44 69 72 20 3d 20 27 25 42 55 49  dToolDir = '%BUI
1bb0: 4c 44 54 4f 4f 4c 44 49 52 25 27 0d 0a 0d 0a 49  LDTOOLDIR%'....I
1bc0: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 42 55  F NOT DEFINED BU
1bd0: 49 4c 44 54 4f 4f 4c 44 49 52 20 28 0d 0a 20 20  ILDTOOLDIR (..  
1be0: 45 43 48 4f 2e 0d 0a 20 20 45 43 48 4f 20 4e 6f  ECHO...  ECHO No
1bf0: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
1c00: 69 6e 69 6e 67 20 4d 53 42 75 69 6c 64 20 63 6f  ining MSBuild co
1c10: 75 6c 64 20 62 65 20 66 6f 75 6e 64 2e 0d 0a 20  uld be found... 
1c20: 20 45 43 48 4f 2e 0d 0a 20 20 45 43 48 4f 20 50   ECHO...  ECHO P
1c30: 6c 65 61 73 65 20 69 6e 73 74 61 6c 6c 20 74 68  lease install th
1c40: 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
1c50: 20 6f 72 20 73 65 74 20 74 68 65 20 22 46 52 41   or set the "FRA
1c60: 4d 45 57 4f 52 4b 44 49 52 22 0d 0a 20 20 45 43  MEWORKDIR"..  EC
1c70: 48 4f 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  HO environment v
1c80: 61 72 69 61 62 6c 65 20 74 6f 20 74 68 65 20 6c  ariable to the l
1c90: 6f 63 61 74 69 6f 6e 20 77 68 65 72 65 20 69 74  ocation where it
1ca0: 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 2e 0d 0a   is installed...
1cb0: 20 20 45 43 48 4f 2e 0d 0a 20 20 47 4f 54 4f 20    ECHO...  GOTO 
1cc0: 65 72 72 6f 72 73 0d 0a 29 0d 0a 0d 0a 43 41 4c  errors..)....CAL
1cd0: 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f 72  L :fn_ResetError
1ce0: 4c 65 76 65 6c 0d 0a 0d 0a 25 5f 5f 45 43 48 4f  Level....%__ECHO
1cf0: 32 25 20 50 55 53 48 44 20 22 25 52 4f 4f 54 25  2% PUSHD "%ROOT%
1d00: 22 0d 0a 0d 0a 49 46 20 45 52 52 4f 52 4c 45 56  "....IF ERRORLEV
1d10: 45 4c 20 31 20 28 0d 0a 20 20 45 43 48 4f 20 43  EL 1 (..  ECHO C
1d20: 6f 75 6c 64 20 6e 6f 74 20 63 68 61 6e 67 65 20  ould not change 
1d30: 64 69 72 65 63 74 6f 72 79 20 74 6f 20 22 25 52  directory to "%R
1d40: 4f 4f 54 25 22 2e 0d 0a 20 20 47 4f 54 4f 20 65  OOT%"...  GOTO e
1d50: 72 72 6f 72 73 0d 0a 29 0d 0a 0d 0a 43 41 4c 4c  rrors..)....CALL
1d60: 20 3a 66 6e 5f 50 72 65 70 65 6e 64 54 6f 50 61   :fn_PrependToPa
1d70: 74 68 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 0d  th BUILDTOOLDIR.
1d80: 0a 0d 0a 25 5f 56 45 43 48 4f 25 20 50 61 74 68  ...%_VECHO% Path
1d90: 20 3d 20 27 25 50 41 54 48 25 27 0d 0a 0d 0a 49   = '%PATH%'....I
1da0: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 53 4f  F NOT DEFINED SO
1db0: 4c 55 54 49 4f 4e 20 28 0d 0a 20 20 49 46 20 44  LUTION (..  IF D
1dc0: 45 46 49 4e 45 44 20 43 4f 52 45 4f 4e 4c 59 20  EFINED COREONLY 
1dd0: 28 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20  (..    %_AECHO% 
1de0: 42 75 69 6c 64 69 6e 67 20 63 6f 72 65 20 6d 61  Building core ma
1df0: 6e 61 67 65 64 20 70 72 6f 6a 65 63 74 2e 2e 2e  naged project...
1e00: 0d 0a 20 20 20 20 53 45 54 20 53 4f 4c 55 54 49  ..    SET SOLUTI
1e10: 4f 4e 3d 2e 5c 53 79 73 74 65 6d 2e 44 61 74 61  ON=.\System.Data
1e20: 2e 53 51 4c 69 74 65 5c 53 79 73 74 65 6d 2e 44  .SQLite\System.D
1e30: 61 74 61 2e 53 51 4c 69 74 65 2e 25 59 45 41 52  ata.SQLite.%YEAR
1e40: 25 2e 63 73 70 72 6f 6a 0d 0a 20 20 29 0d 0a 29  %.csproj..  )..)
1e50: 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e  ....IF NOT DEFIN
1e60: 45 44 20 53 4f 4c 55 54 49 4f 4e 20 28 0d 0a 20  ED SOLUTION (.. 
1e70: 20 49 46 20 44 45 46 49 4e 45 44 20 49 4e 54 45   IF DEFINED INTE
1e80: 52 4f 50 4f 4e 4c 59 20 28 0d 0a 20 20 20 20 49  ROPONLY (..    I
1e90: 46 20 44 45 46 49 4e 45 44 20 53 54 41 54 49 43  F DEFINED STATIC
1ea0: 4f 4e 4c 59 20 28 0d 0a 20 20 20 20 20 20 25 5f  ONLY (..      %_
1eb0: 41 45 43 48 4f 25 20 42 75 69 6c 64 69 6e 67 20  AECHO% Building 
1ec0: 73 74 61 74 69 63 20 63 6f 72 65 20 69 6e 74 65  static core inte
1ed0: 72 6f 70 20 70 72 6f 6a 65 63 74 2e 2e 2e 0d 0a  rop project.....
1ee0: 20 20 20 20 20 20 46 4f 52 20 2f 46 20 22 64 65        FOR /F "de
1ef0: 6c 69 6d 73 3d 22 20 25 25 46 20 49 4e 20 28 27  lims=" %%F IN ('
1f00: 44 49 52 20 2f 42 20 2f 53 20 22 2e 5c 53 51 4c  DIR /B /S ".\SQL
1f10: 69 74 65 2e 49 6e 74 65 72 6f 70 5c 53 51 4c 69  ite.Interop\SQLi
1f20: 74 65 2e 49 6e 74 65 72 6f 70 2e 53 74 61 74 69  te.Interop.Stati
1f30: 63 2e 25 59 45 41 52 25 2e 76 63 3f 70 72 6f 6a  c.%YEAR%.vc?proj
1f40: 22 20 32 5e 3e 20 4e 55 4c 27 29 20 44 4f 20 28  " 2^> NUL') DO (
1f50: 0d 0a 20 20 20 20 20 20 20 20 53 45 54 20 53 4f  ..        SET SO
1f60: 4c 55 54 49 4f 4e 3d 25 25 46 0d 0a 20 20 20 20  LUTION=%%F..    
1f70: 20 20 29 0d 0a 20 20 20 20 20 20 49 46 20 4e 4f    )..      IF NO
1f80: 54 20 44 45 46 49 4e 45 44 20 53 4f 4c 55 54 49  T DEFINED SOLUTI
1f90: 4f 4e 20 28 0d 0a 20 20 20 20 20 20 20 20 45 43  ON (..        EC
1fa0: 48 4f 20 43 6f 75 6c 64 20 6e 6f 74 20 6c 6f 63  HO Could not loc
1fb0: 61 74 65 20 73 74 61 74 69 63 20 63 6f 72 65 20  ate static core 
1fc0: 69 6e 74 65 72 6f 70 20 70 72 6f 6a 65 63 74 20  interop project 
1fd0: 66 6f 72 20 25 59 45 41 52 25 2e 0d 0a 20 20 20  for %YEAR%...   
1fe0: 20 20 20 20 20 47 4f 54 4f 20 65 72 72 6f 72 73       GOTO errors
1ff0: 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 29  ..      )..    )
2000: 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20 20 25   ELSE (..      %
2010: 5f 41 45 43 48 4f 25 20 42 75 69 6c 64 69 6e 67  _AECHO% Building
2020: 20 6e 6f 72 6d 61 6c 20 63 6f 72 65 20 69 6e 74   normal core int
2030: 65 72 6f 70 20 70 72 6f 6a 65 63 74 2e 2e 2e 0d  erop project....
2040: 0a 20 20 20 20 20 20 46 4f 52 20 2f 46 20 22 64  .      FOR /F "d
2050: 65 6c 69 6d 73 3d 22 20 25 25 46 20 49 4e 20 28  elims=" %%F IN (
2060: 27 44 49 52 20 2f 42 20 2f 53 20 22 2e 5c 53 51  'DIR /B /S ".\SQ
2070: 4c 69 74 65 2e 49 6e 74 65 72 6f 70 5c 53 51 4c  Lite.Interop\SQL
2080: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 25 59 45 41  ite.Interop.%YEA
2090: 52 25 2e 76 63 3f 70 72 6f 6a 22 20 32 5e 3e 20  R%.vc?proj" 2^> 
20a0: 4e 55 4c 27 29 20 44 4f 20 28 0d 0a 20 20 20 20  NUL') DO (..    
20b0: 20 20 20 20 53 45 54 20 53 4f 4c 55 54 49 4f 4e      SET SOLUTION
20c0: 3d 25 25 46 0d 0a 20 20 20 20 20 20 29 0d 0a 20  =%%F..      ).. 
20d0: 20 20 20 20 20 49 46 20 4e 4f 54 20 44 45 46 49       IF NOT DEFI
20e0: 4e 45 44 20 53 4f 4c 55 54 49 4f 4e 20 28 0d 0a  NED SOLUTION (..
20f0: 20 20 20 20 20 20 20 20 45 43 48 4f 20 43 6f 75          ECHO Cou
2100: 6c 64 20 6e 6f 74 20 6c 6f 63 61 74 65 20 6e 6f  ld not locate no
2110: 72 6d 61 6c 20 63 6f 72 65 20 69 6e 74 65 72 6f  rmal core intero
2120: 70 20 70 72 6f 6a 65 63 74 20 66 6f 72 20 25 59  p project for %Y
2130: 45 41 52 25 2e 0d 0a 20 20 20 20 20 20 20 20 47  EAR%...        G
2140: 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20  OTO errors..    
2150: 20 20 29 0d 0a 20 20 20 20 29 0d 0a 20 20 29 0d    )..    )..  ).
2160: 0a 29 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46  .)....IF NOT DEF
2170: 49 4e 45 44 20 53 4f 4c 55 54 49 4f 4e 20 28 0d  INED SOLUTION (.
2180: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 42 55  .  IF DEFINED BU
2190: 49 4c 44 5f 46 55 4c 4c 20 28 0d 0a 20 20 20 20  ILD_FULL (..    
21a0: 25 5f 41 45 43 48 4f 25 20 42 75 69 6c 64 69 6e  %_AECHO% Buildin
21b0: 67 20 61 6c 6c 20 70 72 6f 6a 65 63 74 73 2e 2e  g all projects..
21c0: 2e 0d 0a 20 20 20 20 53 45 54 20 53 4f 4c 55 54  ...    SET SOLUT
21d0: 49 4f 4e 3d 2e 5c 53 51 4c 69 74 65 2e 4e 45 54  ION=.\SQLite.NET
21e0: 2e 25 59 45 41 52 25 2e 73 6c 6e 0d 0a 20 20 29  .%YEAR%.sln..  )
21f0: 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 25 5f 41   ELSE (..    %_A
2200: 45 43 48 4f 25 20 42 75 69 6c 64 69 6e 67 20 61  ECHO% Building a
2210: 6c 6c 20 70 72 6f 6a 65 63 74 73 2e 2e 2e 0d 0a  ll projects.....
2220: 20 20 20 20 53 45 54 20 53 4f 4c 55 54 49 4f 4e      SET SOLUTION
2230: 3d 2e 5c 53 51 4c 69 74 65 2e 4e 45 54 2e 25 59  =.\SQLite.NET.%Y
2240: 45 41 52 25 2e 4d 53 42 75 69 6c 64 2e 73 6c 6e  EAR%.MSBuild.sln
2250: 0d 0a 20 20 29 0d 0a 29 0d 0a 0d 0a 25 5f 56 45  ..  )..)....%_VE
2260: 43 48 4f 25 20 53 6f 6c 75 74 69 6f 6e 20 3d 20  CHO% Solution = 
2270: 27 25 53 4f 4c 55 54 49 4f 4e 25 27 0d 0a 0d 0a  '%SOLUTION%'....
2280: 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25 53  IF NOT EXIST "%S
2290: 4f 4c 55 54 49 4f 4e 25 22 20 28 0d 0a 20 20 45  OLUTION%" (..  E
22a0: 43 48 4f 20 53 6f 6c 75 74 69 6f 6e 20 66 69 6c  CHO Solution fil
22b0: 65 20 22 25 53 4f 4c 55 54 49 4f 4e 25 22 20 64  e "%SOLUTION%" d
22c0: 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0d 0a  oes not exist...
22d0: 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 29    GOTO errors..)
22e0: 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e  ....IF NOT DEFIN
22f0: 45 44 20 54 41 52 47 45 54 20 28 0d 0a 20 20 53  ED TARGET (..  S
2300: 45 54 20 54 41 52 47 45 54 3d 52 65 62 75 69 6c  ET TARGET=Rebuil
2310: 64 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48 4f 25  d..)....%_VECHO%
2320: 20 54 61 72 67 65 74 20 3d 20 27 25 54 41 52 47   Target = '%TARG
2330: 45 54 25 27 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44  ET%'....IF NOT D
2340: 45 46 49 4e 45 44 20 54 45 4d 50 20 28 0d 0a 20  EFINED TEMP (.. 
2350: 20 45 43 48 4f 20 54 65 6d 70 6f 72 61 72 79 20   ECHO Temporary 
2360: 64 69 72 65 63 74 6f 72 79 20 6d 75 73 74 20 62  directory must b
2370: 65 20 64 65 66 69 6e 65 64 2e 0d 0a 20 20 47 4f  e defined...  GO
2380: 54 4f 20 65 72 72 6f 72 73 0d 0a 29 0d 0a 0d 0a  TO errors..)....
2390: 25 5f 56 45 43 48 4f 25 20 54 65 6d 70 20 3d 20  %_VECHO% Temp = 
23a0: 27 25 54 45 4d 50 25 27 0d 0a 0d 0a 49 46 20 4e  '%TEMP%'....IF N
23b0: 4f 54 20 44 45 46 49 4e 45 44 20 4c 4f 47 44 49  OT DEFINED LOGDI
23c0: 52 20 28 0d 0a 20 20 53 45 54 20 4c 4f 47 44 49  R (..  SET LOGDI
23d0: 52 3d 25 54 45 4d 50 25 0d 0a 29 0d 0a 0d 0a 25  R=%TEMP%..)....%
23e0: 5f 56 45 43 48 4f 25 20 4c 6f 67 44 69 72 20 3d  _VECHO% LogDir =
23f0: 20 27 25 4c 4f 47 44 49 52 25 27 0d 0a 0d 0a 49   '%LOGDIR%'....I
2400: 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4c 4f  F NOT DEFINED LO
2410: 47 50 52 45 46 49 58 20 28 0d 0a 20 20 53 45 54  GPREFIX (..  SET
2420: 20 4c 4f 47 50 52 45 46 49 58 3d 53 79 73 74 65   LOGPREFIX=Syste
2430: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 42 75  m.Data.SQLite.Bu
2440: 69 6c 64 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48  ild..)....%_VECH
2450: 4f 25 20 4c 6f 67 50 72 65 66 69 78 20 3d 20 27  O% LogPrefix = '
2460: 25 4c 4f 47 50 52 45 46 49 58 25 27 0d 0a 0d 0a  %LOGPREFIX%'....
2470: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4c  IF NOT DEFINED L
2480: 4f 47 53 55 46 46 49 58 20 28 0d 0a 20 20 53 45  OGSUFFIX (..  SE
2490: 54 20 4c 4f 47 53 55 46 46 49 58 3d 55 6e 6b 6e  T LOGSUFFIX=Unkn
24a0: 6f 77 6e 0d 0a 29 0d 0a 0d 0a 25 5f 56 45 43 48  own..)....%_VECH
24b0: 4f 25 20 4c 6f 67 53 75 66 66 69 78 20 3d 20 27  O% LogSuffix = '
24c0: 25 4c 4f 47 53 55 46 46 49 58 25 27 0d 0a 0d 0a  %LOGSUFFIX%'....
24d0: 49 46 20 44 45 46 49 4e 45 44 20 4c 4f 47 47 49  IF DEFINED LOGGI
24e0: 4e 47 20 47 4f 54 4f 20 73 6b 69 70 5f 73 65 74  NG GOTO skip_set
24f0: 4c 6f 67 67 69 6e 67 0d 0a 49 46 20 44 45 46 49  Logging..IF DEFI
2500: 4e 45 44 20 4e 4f 4c 4f 47 20 47 4f 54 4f 20 73  NED NOLOG GOTO s
2510: 6b 69 70 5f 73 65 74 4c 6f 67 67 69 6e 67 0d 0a  kip_setLogging..
2520: 0d 0a 53 45 54 20 4c 4f 47 47 49 4e 47 3d 22 2f  ..SET LOGGING="/
2530: 6c 6f 67 67 65 72 3a 46 69 6c 65 4c 6f 67 67 65  logger:FileLogge
2540: 72 2c 4d 69 63 72 6f 73 6f 66 74 2e 42 75 69 6c  r,Microsoft.Buil
2550: 64 2e 45 6e 67 69 6e 65 3b 4c 6f 67 66 69 6c 65  d.Engine;Logfile
2560: 3d 25 4c 4f 47 44 49 52 25 5c 25 4c 4f 47 50 52  =%LOGDIR%\%LOGPR
2570: 45 46 49 58 25 5f 25 43 4f 4e 46 49 47 55 52 41  EFIX%_%CONFIGURA
2580: 54 49 4f 4e 25 5f 25 50 4c 41 54 46 4f 52 4d 25  TION%_%PLATFORM%
2590: 5f 25 59 45 41 52 25 5f 25 4c 4f 47 53 55 46 46  _%YEAR%_%LOGSUFF
25a0: 49 58 25 2e 6c 6f 67 3b 56 65 72 62 6f 73 69 74  IX%.log;Verbosit
25b0: 79 3d 64 69 61 67 6e 6f 73 74 69 63 22 0d 0a 0d  y=diagnostic"...
25c0: 0a 3a 73 6b 69 70 5f 73 65 74 4c 6f 67 67 69 6e  .:skip_setLoggin
25d0: 67 0d 0a 0d 0a 49 46 20 4e 4f 54 20 44 45 46 49  g....IF NOT DEFI
25e0: 4e 45 44 20 4e 4f 50 52 4f 50 53 20 28 0d 0a 20  NED NOPROPS (.. 
25f0: 20 49 46 20 45 58 49 53 54 20 45 78 74 65 72 6e   IF EXIST Extern
2600: 61 6c 73 5c 45 61 67 6c 65 5c 62 69 6e 5c 45 61  als\Eagle\bin\Ea
2610: 67 6c 65 53 68 65 6c 6c 2e 65 78 65 20 28 0d 0a  gleShell.exe (..
2620: 20 20 20 20 49 46 20 44 45 46 49 4e 45 44 20 49      IF DEFINED I
2630: 4e 54 45 52 4f 50 5f 45 58 54 52 41 5f 50 52 4f  NTEROP_EXTRA_PRO
2640: 50 53 5f 46 49 4c 45 20 28 0d 0a 20 20 20 20 20  PS_FILE (..     
2650: 20 52 45 4d 0d 0a 20 20 20 20 20 20 52 45 4d 20   REM..      REM 
2660: 48 41 43 4b 3a 20 54 68 69 73 20 69 73 20 75 73  HACK: This is us
2670: 65 64 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e  ed to work aroun
2680: 64 20 61 20 6c 69 6d 69 74 61 74 69 6f 6e 20 6f  d a limitation o
2690: 66 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  f Visual Studio 
26a0: 32 30 30 35 0d 0a 20 20 20 20 20 20 52 45 4d 20  2005..      REM 
26b0: 20 20 20 20 20 20 61 6e 64 20 32 30 30 38 20 74        and 2008 t
26c0: 68 61 74 20 70 72 65 76 65 6e 74 73 20 74 68 65  hat prevents the
26d0: 20 22 49 6e 68 65 72 69 74 65 64 50 72 6f 70 65   "InheritedPrope
26e0: 72 74 79 53 68 65 65 74 73 22 20 61 74 74 72 69  rtySheets" attri
26f0: 62 75 74 65 0d 0a 20 20 20 20 20 20 52 45 4d 20  bute..      REM 
2700: 20 20 20 20 20 20 76 61 6c 75 65 20 66 72 6f 6d        value from
2710: 20 77 6f 72 6b 69 6e 67 20 63 6f 72 72 65 63 74   working correct
2720: 6c 79 20 77 68 65 6e 20 69 74 20 72 65 66 65 72  ly when it refer
2730: 73 20 74 6f 20 61 20 70 72 6f 70 65 72 74 79 20  s to a property 
2740: 74 68 61 74 0d 0a 20 20 20 20 20 20 52 45 4d 20  that..      REM 
2750: 20 20 20 20 20 20 65 76 61 6c 75 61 74 65 73 20        evaluates 
2760: 74 6f 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  to an empty stri
2770: 6e 67 2e 0d 0a 20 20 20 20 20 20 52 45 4d 0d 0a  ng...      REM..
2780: 20 20 20 20 20 20 25 5f 5f 45 43 48 4f 25 20 45        %__ECHO% E
2790: 78 74 65 72 6e 61 6c 73 5c 45 61 67 6c 65 5c 62  xternals\Eagle\b
27a0: 69 6e 5c 45 61 67 6c 65 53 68 65 6c 6c 2e 65 78  in\EagleShell.ex
27b0: 65 20 2d 65 76 61 6c 75 61 74 65 20 22 73 65 74  e -evaluate "set
27c0: 20 66 69 6c 65 4e 61 6d 65 20 7b 53 51 4c 69 74   fileName {SQLit
27d0: 65 2e 49 6e 74 65 72 6f 70 2f 70 72 6f 70 73 2f  e.Interop/props/
27e0: 69 6e 63 6c 75 64 65 2e 76 73 70 72 6f 70 73 7d  include.vsprops}
27f0: 3b 20 73 65 74 20 64 61 74 61 20 5b 72 65 61 64  ; set data [read
2800: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 3b  File $fileName];
2810: 20 72 65 67 73 75 62 20 2d 2d 20 7b 09 49 6e 68   regsub -- {.Inh
2820: 65 72 69 74 65 64 50 72 6f 70 65 72 74 79 53 68  eritedPropertySh
2830: 65 65 74 73 3d 5c 22 5c 22 7d 20 24 64 61 74 61  eets=\"\"} $data
2840: 20 7b 09 49 6e 68 65 72 69 74 65 64 50 72 6f 70   {.InheritedProp
2850: 65 72 74 79 53 68 65 65 74 73 3d 5c 22 24 5e 28  ertySheets=\"$^(
2860: 49 4e 54 45 52 4f 50 5f 45 58 54 52 41 5f 50 52  INTEROP_EXTRA_PR
2870: 4f 50 53 5f 46 49 4c 45 5e 29 5c 22 7d 20 64 61  OPS_FILE^)\"} da
2880: 74 61 3b 20 77 72 69 74 65 46 69 6c 65 20 24 66  ta; writeFile $f
2890: 69 6c 65 4e 61 6d 65 20 24 64 61 74 61 22 0d 0a  ileName $data"..
28a0: 0d 0a 20 20 20 20 20 20 49 46 20 45 52 52 4f 52  ..      IF ERROR
28b0: 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20 20 20 20  LEVEL 1 (..     
28c0: 20 20 20 45 43 48 4f 20 50 72 6f 70 65 72 74 79     ECHO Property
28d0: 20 66 69 6c 65 20 6d 6f 64 69 66 69 63 61 74 69   file modificati
28e0: 6f 6e 20 6f 66 20 22 53 51 4c 69 74 65 2e 49 6e  on of "SQLite.In
28f0: 74 65 72 6f 70 5c 70 72 6f 70 73 5c 69 6e 63 6c  terop\props\incl
2900: 75 64 65 2e 76 73 70 72 6f 70 73 22 20 66 61 69  ude.vsprops" fai
2910: 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 47 4f  led...        GO
2920: 54 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20 20  TO errors..     
2930: 20 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20   ) ELSE (..     
2940: 20 20 20 45 43 48 4f 20 50 72 6f 70 65 72 74 79     ECHO Property
2950: 20 66 69 6c 65 20 6d 6f 64 69 66 69 63 61 74 69   file modificati
2960: 6f 6e 20 73 75 63 63 65 73 73 66 75 6c 2e 0d 0a  on successful...
2970: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 29 0d 0a        )..    )..
2980: 20 20 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20    ) ELSE (..    
2990: 45 43 48 4f 20 57 41 52 4e 49 4e 47 3a 20 50 72  ECHO WARNING: Pr
29a0: 6f 70 65 72 74 79 20 66 69 6c 65 20 6d 6f 64 69  operty file modi
29b0: 66 69 63 61 74 69 6f 6e 20 73 6b 69 70 70 65 64  fication skipped
29c0: 2c 20 45 61 67 6c 65 20 62 69 6e 61 72 69 65 73  , Eagle binaries
29d0: 20 61 72 65 20 6e 6f 74 20 61 76 61 69 6c 61 62   are not availab
29e0: 6c 65 2e 0d 0a 20 20 29 0d 0a 29 20 45 4c 53 45  le...  )..) ELSE
29f0: 20 28 0d 0a 20 20 45 43 48 4f 20 57 41 52 4e 49   (..  ECHO WARNI
2a00: 4e 47 3a 20 50 72 6f 70 65 72 74 79 20 66 69 6c  NG: Property fil
2a10: 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 73  e modification s
2a20: 6b 69 70 70 65 64 2c 20 64 69 73 61 62 6c 65 64  kipped, disabled
2a30: 20 76 69 61 20 4e 4f 50 52 4f 50 53 20 65 6e 76   via NOPROPS env
2a40: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c  ironment variabl
2a50: 65 2e 0d 0a 29 0d 0a 0d 0a 49 46 20 4e 4f 54 20  e...)....IF NOT 
2a60: 44 45 46 49 4e 45 44 20 4e 4f 54 41 47 20 28 0d  DEFINED NOTAG (.
2a70: 0a 20 20 49 46 20 45 58 49 53 54 20 45 78 74 65  .  IF EXIST Exte
2a80: 72 6e 61 6c 73 5c 45 61 67 6c 65 5c 62 69 6e 5c  rnals\Eagle\bin\
2a90: 45 61 67 6c 65 53 68 65 6c 6c 2e 65 78 65 20 28  EagleShell.exe (
2aa0: 0d 0a 20 20 20 20 25 5f 5f 45 43 48 4f 25 20 45  ..    %__ECHO% E
2ab0: 78 74 65 72 6e 61 6c 73 5c 45 61 67 6c 65 5c 62  xternals\Eagle\b
2ac0: 69 6e 5c 45 61 67 6c 65 53 68 65 6c 6c 2e 65 78  in\EagleShell.ex
2ad0: 65 20 2d 66 69 6c 65 20 53 65 74 75 70 5c 73 6f  e -file Setup\so
2ae0: 75 72 63 65 54 61 67 2e 65 61 67 6c 65 20 53 6f  urceTag.eagle So
2af0: 75 72 63 65 49 64 4d 6f 64 65 20 53 51 4c 69 74  urceIdMode SQLit
2b00: 65 2e 49 6e 74 65 72 6f 70 5c 73 72 63 5c 67 65  e.Interop\src\ge
2b10: 6e 65 72 69 63 5c 69 6e 74 65 72 6f 70 2e 68 0d  neric\interop.h.
2b20: 0a 0d 0a 20 20 20 20 49 46 20 45 52 52 4f 52 4c  ...    IF ERRORL
2b30: 45 56 45 4c 20 31 20 28 0d 0a 20 20 20 20 20 20  EVEL 1 (..      
2b40: 45 43 48 4f 20 53 6f 75 72 63 65 20 74 61 67 67  ECHO Source tagg
2b50: 69 6e 67 20 6f 66 20 22 53 51 4c 69 74 65 2e 49  ing of "SQLite.I
2b60: 6e 74 65 72 6f 70 5c 73 72 63 5c 67 65 6e 65 72  nterop\src\gener
2b70: 69 63 5c 69 6e 74 65 72 6f 70 2e 68 22 20 66 61  ic\interop.h" fa
2b80: 69 6c 65 64 2e 0d 0a 20 20 20 20 20 20 47 4f 54  iled...      GOT
2b90: 4f 20 65 72 72 6f 72 73 0d 0a 20 20 20 20 29 0d  O errors..    ).
2ba0: 0a 0d 0a 20 20 20 20 25 5f 5f 45 43 48 4f 25 20  ...    %__ECHO% 
2bb0: 45 78 74 65 72 6e 61 6c 73 5c 45 61 67 6c 65 5c  Externals\Eagle\
2bc0: 62 69 6e 5c 45 61 67 6c 65 53 68 65 6c 6c 2e 65  bin\EagleShell.e
2bd0: 78 65 20 2d 66 69 6c 65 20 53 65 74 75 70 5c 73  xe -file Setup\s
2be0: 6f 75 72 63 65 54 61 67 2e 65 61 67 6c 65 20 53  ourceTag.eagle S
2bf0: 6f 75 72 63 65 49 64 4d 6f 64 65 20 53 79 73 74  ourceIdMode Syst
2c00: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 5c 53  em.Data.SQLite\S
2c10: 51 4c 69 74 65 50 61 74 63 68 4c 65 76 65 6c 2e  QLitePatchLevel.
2c20: 63 73 0d 0a 0d 0a 20 20 20 20 49 46 20 45 52 52  cs....    IF ERR
2c30: 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20 20  ORLEVEL 1 (..   
2c40: 20 20 20 45 43 48 4f 20 53 6f 75 72 63 65 20 74     ECHO Source t
2c50: 61 67 67 69 6e 67 20 6f 66 20 22 53 79 73 74 65  agging of "Syste
2c60: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 5c 53 51  m.Data.SQLite\SQ
2c70: 4c 69 74 65 50 61 74 63 68 4c 65 76 65 6c 2e 63  LitePatchLevel.c
2c80: 73 22 20 66 61 69 6c 65 64 2e 0d 0a 20 20 20 20  s" failed...    
2c90: 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 20    GOTO errors.. 
2ca0: 20 20 20 29 0d 0a 20 20 29 20 45 4c 53 45 20 28     )..  ) ELSE (
2cb0: 0d 0a 20 20 20 20 45 43 48 4f 20 57 41 52 4e 49  ..    ECHO WARNI
2cc0: 4e 47 3a 20 53 6f 75 72 63 65 20 74 61 67 67 69  NG: Source taggi
2cd0: 6e 67 20 73 6b 69 70 70 65 64 2c 20 45 61 67 6c  ng skipped, Eagl
2ce0: 65 20 62 69 6e 61 72 69 65 73 20 61 72 65 20 6e  e binaries are n
2cf0: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
2d00: 20 29 0d 0a 29 20 45 4c 53 45 20 28 0d 0a 20 20   )..) ELSE (..  
2d10: 45 43 48 4f 20 57 41 52 4e 49 4e 47 3a 20 53 6f  ECHO WARNING: So
2d20: 75 72 63 65 20 74 61 67 67 69 6e 67 20 73 6b 69  urce tagging ski
2d30: 70 70 65 64 2c 20 64 69 73 61 62 6c 65 64 20 76  pped, disabled v
2d40: 69 61 20 4e 4f 54 41 47 20 65 6e 76 69 72 6f 6e  ia NOTAG environ
2d50: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a  ment variable...
2d60: 29 0d 0a 0d 0a 43 41 4c 4c 20 3a 66 6e 5f 43 6f  )....CALL :fn_Co
2d70: 70 79 56 61 72 69 61 62 6c 65 20 4d 53 42 55 49  pyVariable MSBUI
2d80: 4c 44 5f 41 52 47 53 5f 25 42 41 53 45 5f 43 4f  LD_ARGS_%BASE_CO
2d90: 4e 46 49 47 55 52 41 54 49 4f 4e 25 20 4d 53 42  NFIGURATION% MSB
2da0: 55 49 4c 44 5f 41 52 47 53 5f 43 46 47 0d 0a 0d  UILD_ARGS_CFG...
2db0: 0a 25 5f 56 45 43 48 4f 25 20 4c 6f 67 67 69 6e  .%_VECHO% Loggin
2dc0: 67 20 3d 20 27 25 4c 4f 47 47 49 4e 47 25 27 0d  g = '%LOGGING%'.
2dd0: 0a 25 5f 56 45 43 48 4f 25 20 42 75 69 6c 64 41  .%_VECHO% BuildA
2de0: 72 67 73 20 3d 20 27 25 42 55 49 4c 44 5f 41 52  rgs = '%BUILD_AR
2df0: 47 53 25 27 0d 0a 25 5f 56 45 43 48 4f 25 20 4d  GS%'..%_VECHO% M
2e00: 73 42 75 69 6c 64 41 72 67 73 20 3d 20 27 25 4d  sBuildArgs = '%M
2e10: 53 42 55 49 4c 44 5f 41 52 47 53 25 27 0d 0a 25  SBUILD_ARGS%'..%
2e20: 5f 56 45 43 48 4f 25 20 4d 73 42 75 69 6c 64 41  _VECHO% MsBuildA
2e30: 72 67 73 43 66 67 20 3d 20 27 25 4d 53 42 55 49  rgsCfg = '%MSBUI
2e40: 4c 44 5f 41 52 47 53 5f 43 46 47 25 27 0d 0a 0d  LD_ARGS_CFG%'...
2e50: 0a 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20  .IF NOT DEFINED 
2e60: 4e 4f 42 55 49 4c 44 20 28 0d 0a 20 20 25 5f 5f  NOBUILD (..  %__
2e70: 45 43 48 4f 25 20 22 25 4d 53 42 55 49 4c 44 25  ECHO% "%MSBUILD%
2e80: 22 20 22 25 53 4f 4c 55 54 49 4f 4e 25 22 20 22  " "%SOLUTION%" "
2e90: 2f 74 61 72 67 65 74 3a 25 54 41 52 47 45 54 25  /target:%TARGET%
2ea0: 22 20 22 2f 70 72 6f 70 65 72 74 79 3a 43 6f 6e  " "/property:Con
2eb0: 66 69 67 75 72 61 74 69 6f 6e 3d 25 43 4f 4e 46  figuration=%CONF
2ec0: 49 47 55 52 41 54 49 4f 4e 25 22 20 22 2f 70 72  IGURATION%" "/pr
2ed0: 6f 70 65 72 74 79 3a 50 6c 61 74 66 6f 72 6d 3d  operty:Platform=
2ee0: 25 50 4c 41 54 46 4f 52 4d 25 22 20 25 4c 4f 47  %PLATFORM%" %LOG
2ef0: 47 49 4e 47 25 20 25 42 55 49 4c 44 5f 41 52 47  GING% %BUILD_ARG
2f00: 53 25 20 25 4d 53 42 55 49 4c 44 5f 41 52 47 53  S% %MSBUILD_ARGS
2f10: 25 20 25 4d 53 42 55 49 4c 44 5f 41 52 47 53 5f  % %MSBUILD_ARGS_
2f20: 43 46 47 25 0d 0a 0d 0a 20 20 49 46 20 45 52 52  CFG%....  IF ERR
2f30: 4f 52 4c 45 56 45 4c 20 31 20 28 0d 0a 20 20 20  ORLEVEL 1 (..   
2f40: 20 45 43 48 4f 20 42 75 69 6c 64 20 66 61 69 6c   ECHO Build fail
2f50: 65 64 2e 0d 0a 20 20 20 20 47 4f 54 4f 20 65 72  ed...    GOTO er
2f60: 72 6f 72 73 0d 0a 20 20 29 0d 0a 29 20 45 4c 53  rors..  )..) ELS
2f70: 45 20 28 0d 0a 20 20 45 43 48 4f 20 57 41 52 4e  E (..  ECHO WARN
2f80: 49 4e 47 3a 20 42 75 69 6c 64 20 73 6b 69 70 70  ING: Build skipp
2f90: 65 64 2c 20 64 69 73 61 62 6c 65 64 20 76 69 61  ed, disabled via
2fa0: 20 4e 4f 42 55 49 4c 44 20 65 6e 76 69 72 6f 6e   NOBUILD environ
2fb0: 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 2e 0d 0a  ment variable...
2fc0: 29 0d 0a 0d 0a 25 5f 5f 45 43 48 4f 32 25 20 50  )....%__ECHO2% P
2fd0: 4f 50 44 0d 0a 0d 0a 49 46 20 45 52 52 4f 52 4c  OPD....IF ERRORL
2fe0: 45 56 45 4c 20 31 20 28 0d 0a 20 20 45 43 48 4f  EVEL 1 (..  ECHO
2ff0: 20 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73 74 6f   Could not resto
3000: 72 65 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20  re directory... 
3010: 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 29 0d   GOTO errors..).
3020: 0a 0d 0a 47 4f 54 4f 20 6e 6f 5f 65 72 72 6f 72  ...GOTO no_error
3030: 73 0d 0a 0d 0a 3a 66 6e 5f 43 68 65 63 6b 46 72  s....:fn_CheckFr
3040: 61 6d 65 77 6f 72 6b 44 69 72 0d 0a 20 20 49 46  ameworkDir..  IF
3050: 20 44 45 46 49 4e 45 44 20 4e 4f 46 52 41 4d 45   DEFINED NOFRAME
3060: 57 4f 52 4b 44 49 52 20 47 4f 54 4f 20 3a 45 4f  WORKDIR GOTO :EO
3070: 46 0d 0a 20 20 53 45 54 20 46 52 41 4d 45 57 4f  F..  SET FRAMEWO
3080: 52 4b 56 45 52 3d 25 31 0d 0a 20 20 25 5f 41 45  RKVER=%1..  %_AE
3090: 43 48 4f 25 20 43 68 65 63 6b 69 6e 67 20 66 6f  CHO% Checking fo
30a0: 72 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  r .NET Framework
30b0: 20 22 25 46 52 41 4d 45 57 4f 52 4b 56 45 52 25   "%FRAMEWORKVER%
30c0: 22 2e 2e 2e 0d 0a 20 20 49 46 20 4e 4f 54 20 44  ".....  IF NOT D
30d0: 45 46 49 4e 45 44 20 46 52 41 4d 45 57 4f 52 4b  EFINED FRAMEWORK
30e0: 56 45 52 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20  VER GOTO :EOF.. 
30f0: 20 49 46 20 44 45 46 49 4e 45 44 20 4e 4f 46 52   IF DEFINED NOFR
3100: 41 4d 45 57 4f 52 4b 36 34 20 28 0d 0a 20 20 20  AMEWORK64 (..   
3110: 20 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 65 64   %_AECHO% Forced
3120: 20 69 6e 74 6f 20 75 73 69 6e 67 20 33 32 2d 62   into using 32-b
3130: 69 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 53  it version of MS
3140: 42 75 69 6c 64 20 66 72 6f 6d 20 4d 69 63 72 6f  Build from Micro
3150: 73 6f 66 74 2e 4e 45 54 2e 2e 2e 0d 0a 20 20 20  soft.NET.....   
3160: 20 53 45 54 20 46 52 41 4d 45 57 4f 52 4b 44 49   SET FRAMEWORKDI
3170: 52 3d 25 77 69 6e 64 69 72 25 5c 4d 69 63 72 6f  R=%windir%\Micro
3180: 73 6f 66 74 2e 4e 45 54 5c 46 72 61 6d 65 77 6f  soft.NET\Framewo
3190: 72 6b 5c 25 46 52 41 4d 45 57 4f 52 4b 56 45 52  rk\%FRAMEWORKVER
31a0: 25 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f  %..    CALL :fn_
31b0: 56 65 72 69 66 79 46 72 61 6d 65 77 6f 72 6b 44  VerifyFrameworkD
31c0: 69 72 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  ir..    GOTO :EO
31d0: 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 4e 4f 54  F..  )..  IF NOT
31e0: 20 22 25 50 52 4f 43 45 53 53 4f 52 5f 41 52 43   "%PROCESSOR_ARC
31f0: 48 49 54 45 43 54 55 52 45 25 22 20 3d 3d 20 22  HITECTURE%" == "
3200: 78 38 36 22 20 28 0d 0a 20 20 20 20 25 5f 41 45  x86" (..    %_AE
3210: 43 48 4f 25 20 54 68 65 20 6f 70 65 72 61 74 69  CHO% The operati
3220: 6e 67 20 73 79 73 74 65 6d 20 61 70 70 65 61 72  ng system appear
3230: 73 20 74 6f 20 62 65 20 36 34 2d 62 69 74 2e 0d  s to be 64-bit..
3240: 0a 20 20 20 20 49 46 20 45 58 49 53 54 20 22 25  .    IF EXIST "%
3250: 77 69 6e 64 69 72 25 5c 4d 69 63 72 6f 73 6f 66  windir%\Microsof
3260: 74 2e 4e 45 54 5c 46 72 61 6d 65 77 6f 72 6b 36  t.NET\Framework6
3270: 34 5c 25 46 52 41 4d 45 57 4f 52 4b 56 45 52 25  4\%FRAMEWORKVER%
3280: 22 20 28 0d 0a 20 20 20 20 20 20 49 46 20 45 58  " (..      IF EX
3290: 49 53 54 20 22 25 77 69 6e 64 69 72 25 5c 4d 69  IST "%windir%\Mi
32a0: 63 72 6f 73 6f 66 74 2e 4e 45 54 5c 46 72 61 6d  crosoft.NET\Fram
32b0: 65 77 6f 72 6b 36 34 5c 25 46 52 41 4d 45 57 4f  ework64\%FRAMEWO
32c0: 52 4b 56 45 52 25 5c 25 4d 53 42 55 49 4c 44 25  RKVER%\%MSBUILD%
32d0: 22 20 28 0d 0a 20 20 20 20 20 20 20 20 49 46 20  " (..        IF 
32e0: 45 58 49 53 54 20 22 25 77 69 6e 64 69 72 25 5c  EXIST "%windir%\
32f0: 4d 69 63 72 6f 73 6f 66 74 2e 4e 45 54 5c 46 72  Microsoft.NET\Fr
3300: 61 6d 65 77 6f 72 6b 36 34 5c 25 46 52 41 4d 45  amework64\%FRAME
3310: 57 4f 52 4b 56 45 52 25 5c 25 43 53 43 25 22 20  WORKVER%\%CSC%" 
3320: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 25 5f 41  (..          %_A
3330: 45 43 48 4f 25 20 55 73 69 6e 67 20 36 34 2d 62  ECHO% Using 64-b
3340: 69 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 53  it version of MS
3350: 42 75 69 6c 64 20 66 72 6f 6d 20 4d 69 63 72 6f  Build from Micro
3360: 73 6f 66 74 2e 4e 45 54 2e 2e 2e 0d 0a 20 20 20  soft.NET.....   
3370: 20 20 20 20 20 20 20 53 45 54 20 46 52 41 4d 45         SET FRAME
3380: 57 4f 52 4b 44 49 52 3d 25 77 69 6e 64 69 72 25  WORKDIR=%windir%
3390: 5c 4d 69 63 72 6f 73 6f 66 74 2e 4e 45 54 5c 46  \Microsoft.NET\F
33a0: 72 61 6d 65 77 6f 72 6b 36 34 5c 25 46 52 41 4d  ramework64\%FRAM
33b0: 45 57 4f 52 4b 56 45 52 25 0d 0a 20 20 20 20 20  EWORKVER%..     
33c0: 20 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 56 65       CALL :fn_Ve
33d0: 72 69 66 79 46 72 61 6d 65 77 6f 72 6b 44 69 72  rifyFrameworkDir
33e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4f 54 4f  ..          GOTO
33f0: 20 3a 45 4f 46 0d 0a 20 20 20 20 20 20 20 20 29   :EOF..        )
3400: 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20 20 20   ELSE (..       
3410: 20 20 20 25 5f 41 45 43 48 4f 25 20 4d 69 73 73     %_AECHO% Miss
3420: 69 6e 67 20 36 34 2d 62 69 74 20 76 65 72 73 69  ing 64-bit versi
3430: 6f 6e 20 6f 66 20 22 25 43 53 43 25 22 2e 0d 0a  on of "%CSC%"...
3440: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
3450: 20 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20   ) ELSE (..     
3460: 20 20 20 25 5f 41 45 43 48 4f 25 20 4d 69 73 73     %_AECHO% Miss
3470: 69 6e 67 20 36 34 2d 62 69 74 20 76 65 72 73 69  ing 64-bit versi
3480: 6f 6e 20 6f 66 20 22 25 4d 53 42 55 49 4c 44 25  on of "%MSBUILD%
3490: 22 2e 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20  "...      )..   
34a0: 20 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 20   ) ELSE (..     
34b0: 20 25 5f 41 45 43 48 4f 25 20 4d 69 73 73 69 6e   %_AECHO% Missin
34c0: 67 20 36 34 2d 62 69 74 20 76 65 72 73 69 6f 6e  g 64-bit version
34d0: 20 6f 66 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f   of .NET Framewo
34e0: 72 6b 20 22 25 46 52 41 4d 45 57 4f 52 4b 56 45  rk "%FRAMEWORKVE
34f0: 52 25 22 2e 0d 0a 20 20 20 20 29 0d 0a 20 20 29  R%"...    )..  )
3500: 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 25 5f 41   ELSE (..    %_A
3510: 45 43 48 4f 25 20 54 68 65 20 6f 70 65 72 61 74  ECHO% The operat
3520: 69 6e 67 20 73 79 73 74 65 6d 20 61 70 70 65 61  ing system appea
3530: 72 73 20 74 6f 20 62 65 20 33 32 2d 62 69 74 2e  rs to be 32-bit.
3540: 0d 0a 20 20 29 0d 0a 20 20 25 5f 41 45 43 48 4f  ..  )..  %_AECHO
3550: 25 20 55 73 69 6e 67 20 33 32 2d 62 69 74 20 76  % Using 32-bit v
3560: 65 72 73 69 6f 6e 20 6f 66 20 4d 53 42 75 69 6c  ersion of MSBuil
3570: 64 20 66 72 6f 6d 20 4d 69 63 72 6f 73 6f 66 74  d from Microsoft
3580: 2e 4e 45 54 2e 2e 2e 0d 0a 20 20 53 45 54 20 46  .NET.....  SET F
3590: 52 41 4d 45 57 4f 52 4b 44 49 52 3d 25 77 69 6e  RAMEWORKDIR=%win
35a0: 64 69 72 25 5c 4d 69 63 72 6f 73 6f 66 74 2e 4e  dir%\Microsoft.N
35b0: 45 54 5c 46 72 61 6d 65 77 6f 72 6b 5c 25 46 52  ET\Framework\%FR
35c0: 41 4d 45 57 4f 52 4b 56 45 52 25 0d 0a 20 20 43  AMEWORKVER%..  C
35d0: 41 4c 4c 20 3a 66 6e 5f 56 65 72 69 66 79 46 72  ALL :fn_VerifyFr
35e0: 61 6d 65 77 6f 72 6b 44 69 72 0d 0a 20 20 47 4f  ameworkDir..  GO
35f0: 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 56  TO :EOF....:fn_V
3600: 65 72 69 66 79 46 72 61 6d 65 77 6f 72 6b 44 69  erifyFrameworkDi
3610: 72 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20  r..  IF DEFINED 
3620: 4e 4f 46 52 41 4d 45 57 4f 52 4b 44 49 52 20 47  NOFRAMEWORKDIR G
3630: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20 4e  OTO :EOF..  IF N
3640: 4f 54 20 44 45 46 49 4e 45 44 20 46 52 41 4d 45  OT DEFINED FRAME
3650: 57 4f 52 4b 44 49 52 20 28 0d 0a 20 20 20 20 25  WORKDIR (..    %
3660: 5f 41 45 43 48 4f 25 20 2e 4e 45 54 20 46 72 61  _AECHO% .NET Fra
3670: 6d 65 77 6f 72 6b 20 64 69 72 65 63 74 6f 72 79  mework directory
3680: 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65 64 2e   is not defined.
3690: 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  ..    GOTO :EOF.
36a0: 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46 49 4e  .  )..  IF DEFIN
36b0: 45 44 20 46 52 41 4d 45 57 4f 52 4b 44 49 52 20  ED FRAMEWORKDIR 
36c0: 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25 46  IF NOT EXIST "%F
36d0: 52 41 4d 45 57 4f 52 4b 44 49 52 25 22 20 28 0d  RAMEWORKDIR%" (.
36e0: 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 2e 4e  .    %_AECHO% .N
36f0: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 64 69 72  ET Framework dir
3700: 65 63 74 6f 72 79 20 64 6f 65 73 20 6e 6f 74 20  ectory does not 
3710: 65 78 69 73 74 2c 20 75 6e 73 65 74 74 69 6e 67  exist, unsetting
3720: 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66  .....    CALL :f
3730: 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20  n_UnsetVariable 
3740: 46 52 41 4d 45 57 4f 52 4b 44 49 52 0d 0a 20 20  FRAMEWORKDIR..  
3750: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29    GOTO :EOF..  )
3760: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 46  ..  IF DEFINED F
3770: 52 41 4d 45 57 4f 52 4b 44 49 52 20 49 46 20 4e  RAMEWORKDIR IF N
3780: 4f 54 20 45 58 49 53 54 20 22 25 46 52 41 4d 45  OT EXIST "%FRAME
3790: 57 4f 52 4b 44 49 52 25 5c 25 4d 53 42 55 49 4c  WORKDIR%\%MSBUIL
37a0: 44 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43  D%" (..    %_AEC
37b0: 48 4f 25 20 46 69 6c 65 20 22 25 4d 53 42 55 49  HO% File "%MSBUI
37c0: 4c 44 25 22 20 6e 6f 74 20 69 6e 20 2e 4e 45 54  LD%" not in .NET
37d0: 20 46 72 61 6d 65 77 6f 72 6b 20 64 69 72 65 63   Framework direc
37e0: 74 6f 72 79 2c 20 75 6e 73 65 74 74 69 6e 67 2e  tory, unsetting.
37f0: 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e  ....    CALL :fn
3800: 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20 46  _UnsetVariable F
3810: 52 41 4d 45 57 4f 52 4b 44 49 52 0d 0a 20 20 20  RAMEWORKDIR..   
3820: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d   GOTO :EOF..  ).
3830: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 46 52  .  IF DEFINED FR
3840: 41 4d 45 57 4f 52 4b 44 49 52 20 49 46 20 4e 4f  AMEWORKDIR IF NO
3850: 54 20 45 58 49 53 54 20 22 25 46 52 41 4d 45 57  T EXIST "%FRAMEW
3860: 4f 52 4b 44 49 52 25 5c 25 43 53 43 25 22 20 28  ORKDIR%\%CSC%" (
3870: 0d 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 46  ..    %_AECHO% F
3880: 69 6c 65 20 22 25 43 53 43 25 22 20 6e 6f 74 20  ile "%CSC%" not 
3890: 69 6e 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  in .NET Framewor
38a0: 6b 20 64 69 72 65 63 74 6f 72 79 2c 20 75 6e 73  k directory, uns
38b0: 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43  etting.....    C
38c0: 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72  ALL :fn_UnsetVar
38d0: 69 61 62 6c 65 20 46 52 41 4d 45 57 4f 52 4b 44  iable FRAMEWORKD
38e0: 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  IR..    GOTO :EO
38f0: 46 0d 0a 20 20 29 0d 0a 20 20 25 5f 41 45 43 48  F..  )..  %_AECH
3900: 4f 25 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  O% .NET Framewor
3910: 6b 20 64 69 72 65 63 74 6f 72 79 20 22 25 46 52  k directory "%FR
3920: 41 4d 45 57 4f 52 4b 44 49 52 25 22 20 76 65 72  AMEWORKDIR%" ver
3930: 69 66 69 65 64 2e 0d 0a 20 20 47 4f 54 4f 20 3a  ified...  GOTO :
3940: 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 43 68 65 63 6b  EOF....:fn_Check
3950: 4d 73 42 75 69 6c 64 44 69 72 0d 0a 20 20 49 46  MsBuildDir..  IF
3960: 20 44 45 46 49 4e 45 44 20 4e 4f 4d 53 42 55 49   DEFINED NOMSBUI
3970: 4c 44 44 49 52 20 47 4f 54 4f 20 3a 45 4f 46 0d  LDDIR GOTO :EOF.
3980: 0a 20 20 53 45 54 20 4d 53 42 55 49 4c 44 56 45  .  SET MSBUILDVE
3990: 52 3d 25 31 0d 0a 20 20 25 5f 41 45 43 48 4f 25  R=%1..  %_AECHO%
39a0: 20 43 68 65 63 6b 69 6e 67 20 66 6f 72 20 4d 53   Checking for MS
39b0: 42 75 69 6c 64 20 22 25 4d 53 42 55 49 4c 44 56  Build "%MSBUILDV
39c0: 45 52 25 22 2e 2e 2e 0d 0a 20 20 49 46 20 4e 4f  ER%".....  IF NO
39d0: 54 20 44 45 46 49 4e 45 44 20 4d 53 42 55 49 4c  T DEFINED MSBUIL
39e0: 44 56 45 52 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  DVER GOTO :EOF..
39f0: 20 20 49 46 20 44 45 46 49 4e 45 44 20 4e 4f 4d    IF DEFINED NOM
3a00: 53 42 55 49 4c 44 36 34 20 28 0d 0a 20 20 20 20  SBUILD64 (..    
3a10: 25 5f 41 45 43 48 4f 25 20 46 6f 72 63 65 64 20  %_AECHO% Forced 
3a20: 69 6e 74 6f 20 75 73 69 6e 67 20 33 32 2d 62 69  into using 32-bi
3a30: 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 53 42  t version of MSB
3a40: 75 69 6c 64 20 66 72 6f 6d 20 50 72 6f 67 72 61  uild from Progra
3a50: 6d 20 46 69 6c 65 73 2e 2e 2e 0d 0a 20 20 20 20  m Files.....    
3a60: 47 4f 54 4f 20 73 65 74 5f 6d 73 62 75 69 6c 64  GOTO set_msbuild
3a70: 5f 78 38 36 0d 0a 20 20 29 0d 0a 20 20 49 46 20  _x86..  )..  IF 
3a80: 22 25 50 52 4f 43 45 53 53 4f 52 5f 41 52 43 48  "%PROCESSOR_ARCH
3a90: 49 54 45 43 54 55 52 45 25 22 20 3d 3d 20 22 78  ITECTURE%" == "x
3aa0: 38 36 22 20 47 4f 54 4f 20 73 65 74 5f 6d 73 62  86" GOTO set_msb
3ab0: 75 69 6c 64 5f 78 38 36 0d 0a 20 20 25 5f 41 45  uild_x86..  %_AE
3ac0: 43 48 4f 25 20 54 68 65 20 6f 70 65 72 61 74 69  CHO% The operati
3ad0: 6e 67 20 73 79 73 74 65 6d 20 61 70 70 65 61 72  ng system appear
3ae0: 73 20 74 6f 20 62 65 20 36 34 2d 62 69 74 2e 0d  s to be 64-bit..
3af0: 0a 20 20 25 5f 41 45 43 48 4f 25 20 55 73 69 6e  .  %_AECHO% Usin
3b00: 67 20 33 32 2d 62 69 74 20 76 65 72 73 69 6f 6e  g 32-bit version
3b10: 20 6f 66 20 4d 53 42 75 69 6c 64 20 66 72 6f 6d   of MSBuild from
3b20: 20 50 72 6f 67 72 61 6d 20 46 69 6c 65 73 2e 2e   Program Files..
3b30: 2e 0d 0a 20 20 53 45 54 20 4d 53 42 55 49 4c 44  ...  SET MSBUILD
3b40: 44 49 52 3d 25 50 72 6f 67 72 61 6d 46 69 6c 65  DIR=%ProgramFile
3b50: 73 28 78 38 36 29 25 5c 4d 53 42 75 69 6c 64 5c  s(x86)%\MSBuild\
3b60: 25 4d 53 42 55 49 4c 44 56 45 52 25 5c 62 69 6e  %MSBUILDVER%\bin
3b70: 0d 0a 20 20 47 4f 54 4f 20 73 65 74 5f 6d 73 62  ..  GOTO set_msb
3b80: 75 69 6c 64 5f 64 6f 6e 65 0d 0a 20 20 3a 73 65  uild_done..  :se
3b90: 74 5f 6d 73 62 75 69 6c 64 5f 78 38 36 0d 0a 20  t_msbuild_x86.. 
3ba0: 20 25 5f 41 45 43 48 4f 25 20 54 68 65 20 6f 70   %_AECHO% The op
3bb0: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61  erating system a
3bc0: 70 70 65 61 72 73 20 74 6f 20 62 65 20 33 32 2d  ppears to be 32-
3bd0: 62 69 74 2e 0d 0a 20 20 25 5f 41 45 43 48 4f 25  bit...  %_AECHO%
3be0: 20 55 73 69 6e 67 20 6e 61 74 69 76 65 20 76 65   Using native ve
3bf0: 72 73 69 6f 6e 20 6f 66 20 4d 53 42 75 69 6c 64  rsion of MSBuild
3c00: 20 66 72 6f 6d 20 50 72 6f 67 72 61 6d 20 46 69   from Program Fi
3c10: 6c 65 73 2e 2e 2e 0d 0a 20 20 53 45 54 20 4d 53  les.....  SET MS
3c20: 42 55 49 4c 44 44 49 52 3d 25 50 72 6f 67 72 61  BUILDDIR=%Progra
3c30: 6d 46 69 6c 65 73 25 5c 4d 53 42 75 69 6c 64 5c  mFiles%\MSBuild\
3c40: 25 4d 53 42 55 49 4c 44 56 45 52 25 5c 62 69 6e  %MSBUILDVER%\bin
3c50: 0d 0a 20 20 3a 73 65 74 5f 6d 73 62 75 69 6c 64  ..  :set_msbuild
3c60: 5f 64 6f 6e 65 0d 0a 20 20 43 41 4c 4c 20 3a 66  _done..  CALL :f
3c70: 6e 5f 56 65 72 69 66 79 4d 73 42 75 69 6c 64 44  n_VerifyMsBuildD
3c80: 69 72 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  ir..  GOTO :EOF.
3c90: 0a 0d 0a 3a 66 6e 5f 56 65 72 69 66 79 4d 73 42  ...:fn_VerifyMsB
3ca0: 75 69 6c 64 44 69 72 0d 0a 20 20 49 46 20 44 45  uildDir..  IF DE
3cb0: 46 49 4e 45 44 20 4e 4f 4d 53 42 55 49 4c 44 44  FINED NOMSBUILDD
3cc0: 49 52 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20  IR GOTO :EOF..  
3cd0: 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20 4d  IF NOT DEFINED M
3ce0: 53 42 55 49 4c 44 44 49 52 20 28 0d 0a 20 20 20  SBUILDDIR (..   
3cf0: 20 25 5f 41 45 43 48 4f 25 20 4d 53 42 75 69 6c   %_AECHO% MSBuil
3d00: 64 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e  d directory is n
3d10: 6f 74 20 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20  ot defined...   
3d20: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d   GOTO :EOF..  ).
3d30: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 4d 53  .  IF DEFINED MS
3d40: 42 55 49 4c 44 44 49 52 20 49 46 20 4e 4f 54 20  BUILDDIR IF NOT 
3d50: 45 58 49 53 54 20 22 25 4d 53 42 55 49 4c 44 44  EXIST "%MSBUILDD
3d60: 49 52 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45  IR%" (..    %_AE
3d70: 43 48 4f 25 20 4d 53 42 75 69 6c 64 20 64 69 72  CHO% MSBuild dir
3d80: 65 63 74 6f 72 79 20 64 6f 65 73 20 6e 6f 74 20  ectory does not 
3d90: 65 78 69 73 74 2c 20 75 6e 73 65 74 74 69 6e 67  exist, unsetting
3da0: 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66  .....    CALL :f
3db0: 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20  n_UnsetVariable 
3dc0: 4d 53 42 55 49 4c 44 44 49 52 0d 0a 20 20 20 20  MSBUILDDIR..    
3dd0: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a  GOTO :EOF..  )..
3de0: 20 20 49 46 20 44 45 46 49 4e 45 44 20 4d 53 42    IF DEFINED MSB
3df0: 55 49 4c 44 44 49 52 20 49 46 20 4e 4f 54 20 45  UILDDIR IF NOT E
3e00: 58 49 53 54 20 22 25 4d 53 42 55 49 4c 44 44 49  XIST "%MSBUILDDI
3e10: 52 25 5c 25 4d 53 42 55 49 4c 44 25 22 20 28 0d  R%\%MSBUILD%" (.
3e20: 0a 20 20 20 20 25 5f 41 45 43 48 4f 25 20 46 69  .    %_AECHO% Fi
3e30: 6c 65 20 22 25 4d 53 42 55 49 4c 44 25 22 20 6e  le "%MSBUILD%" n
3e40: 6f 74 20 69 6e 20 4d 53 42 75 69 6c 64 20 64 69  ot in MSBuild di
3e50: 72 65 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69  rectory, unsetti
3e60: 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20  ng.....    CALL 
3e70: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
3e80: 65 20 4d 53 42 55 49 4c 44 44 49 52 0d 0a 20 20  e MSBUILDDIR..  
3e90: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29    GOTO :EOF..  )
3ea0: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 4d  ..  IF DEFINED M
3eb0: 53 42 55 49 4c 44 44 49 52 20 49 46 20 4e 4f 54  SBUILDDIR IF NOT
3ec0: 20 45 58 49 53 54 20 22 25 4d 53 42 55 49 4c 44   EXIST "%MSBUILD
3ed0: 44 49 52 25 5c 25 43 53 43 25 22 20 28 0d 0a 20  DIR%\%CSC%" (.. 
3ee0: 20 20 20 25 5f 41 45 43 48 4f 25 20 46 69 6c 65     %_AECHO% File
3ef0: 20 22 25 43 53 43 25 22 20 6e 6f 74 20 69 6e 20   "%CSC%" not in 
3f00: 4d 53 42 75 69 6c 64 20 64 69 72 65 63 74 6f 72  MSBuild director
3f10: 79 2c 20 75 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d  y, unsetting....
3f20: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
3f30: 73 65 74 56 61 72 69 61 62 6c 65 20 4d 53 42 55  setVariable MSBU
3f40: 49 4c 44 44 49 52 0d 0a 20 20 20 20 47 4f 54 4f  ILDDIR..    GOTO
3f50: 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20 25 5f   :EOF..  )..  %_
3f60: 41 45 43 48 4f 25 20 4d 53 42 75 69 6c 64 20 64  AECHO% MSBuild d
3f70: 69 72 65 63 74 6f 72 79 20 22 25 4d 53 42 55 49  irectory "%MSBUI
3f80: 4c 44 44 49 52 25 22 20 76 65 72 69 66 69 65 64  LDDIR%" verified
3f90: 2e 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  ...  GOTO :EOF..
3fa0: 0d 0a 3a 66 6e 5f 43 68 65 63 6b 56 69 73 75 61  ..:fn_CheckVisua
3fb0: 6c 53 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69  lStudioMsBuildDi
3fc0: 72 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20  r..  IF DEFINED 
3fd0: 4e 4f 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53  NOVISUALSTUDIOMS
3fe0: 42 55 49 4c 44 44 49 52 20 47 4f 54 4f 20 3a 45  BUILDDIR GOTO :E
3ff0: 4f 46 0d 0a 20 20 53 45 54 20 4d 53 42 55 49 4c  OF..  SET MSBUIL
4000: 44 56 45 52 3d 25 31 0d 0a 20 20 53 45 54 20 56  DVER=%1..  SET V
4010: 49 53 55 41 4c 53 54 55 44 49 4f 56 45 52 3d 25  ISUALSTUDIOVER=%
4020: 32 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 43 68  2..  %_AECHO% Ch
4030: 65 63 6b 69 6e 67 20 66 6f 72 20 4d 53 42 75 69  ecking for MSBui
4040: 6c 64 20 22 25 4d 53 42 55 49 4c 44 56 45 52 25  ld "%MSBUILDVER%
4050: 22 20 77 69 74 68 69 6e 20 56 69 73 75 61 6c 20  " within Visual 
4060: 53 74 75 64 69 6f 20 22 25 56 49 53 55 41 4c 53  Studio "%VISUALS
4070: 54 55 44 49 4f 56 45 52 25 22 2e 2e 2e 0d 0a 20  TUDIOVER%"..... 
4080: 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20   IF NOT DEFINED 
4090: 4d 53 42 55 49 4c 44 56 45 52 20 47 4f 54 4f 20  MSBUILDVER GOTO 
40a0: 3a 45 4f 46 0d 0a 20 20 49 46 20 4e 4f 54 20 44  :EOF..  IF NOT D
40b0: 45 46 49 4e 45 44 20 56 49 53 55 41 4c 53 54 55  EFINED VISUALSTU
40c0: 44 49 4f 56 45 52 20 47 4f 54 4f 20 3a 45 4f 46  DIOVER GOTO :EOF
40d0: 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e  ..  IF NOT DEFIN
40e0: 45 44 20 56 53 57 48 45 52 45 5f 45 58 45 20 47  ED VSWHERE_EXE G
40f0: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 49 46 20 4e  OTO :EOF..  IF N
4100: 4f 54 20 45 58 49 53 54 20 22 25 56 53 57 48 45  OT EXIST "%VSWHE
4110: 52 45 5f 45 58 45 25 22 20 47 4f 54 4f 20 3a 45  RE_EXE%" GOTO :E
4120: 4f 46 0d 0a 20 20 53 45 54 20 56 53 5f 57 48 45  OF..  SET VS_WHE
4130: 52 45 49 53 5f 43 4d 44 3d 22 25 56 53 57 48 45  REIS_CMD="%VSWHE
4140: 52 45 5f 45 58 45 25 22 20 2d 76 65 72 73 69 6f  RE_EXE%" -versio
4150: 6e 20 25 56 49 53 55 41 4c 53 54 55 44 49 4f 56  n %VISUALSTUDIOV
4160: 45 52 25 20 2d 70 72 6f 64 75 63 74 73 20 2a 20  ER% -products * 
4170: 2d 72 65 71 75 69 72 65 73 20 4d 69 63 72 6f 73  -requires Micros
4180: 6f 66 74 2e 43 6f 6d 70 6f 6e 65 6e 74 2e 4d 53  oft.Component.MS
4190: 42 75 69 6c 64 20 2d 70 72 6f 70 65 72 74 79 20  Build -property 
41a0: 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 50 61 74 68  installationPath
41b0: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 5f  ..  IF DEFINED _
41c0: 5f 45 43 48 4f 20 28 0d 0a 20 20 20 20 25 5f 5f  _ECHO (..    %__
41d0: 45 43 48 4f 25 20 25 56 53 5f 57 48 45 52 45 49  ECHO% %VS_WHEREI
41e0: 53 5f 43 4d 44 25 0d 0a 20 20 20 20 53 45 54 20  S_CMD%..    SET 
41f0: 56 49 53 55 41 4c 53 54 55 44 49 4f 49 4e 53 54  VISUALSTUDIOINST
4200: 41 4c 4c 44 49 52 3d 43 3a 5c 50 72 6f 67 72 61  ALLDIR=C:\Progra
4210: 6d 20 46 69 6c 65 73 5c 4d 69 63 72 6f 73 6f 66  m Files\Microsof
4220: 74 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 5c  t Visual Studio\
4230: 32 30 31 37 5c 43 6f 6d 6d 75 6e 69 74 79 0d 0a  2017\Community..
4240: 20 20 20 20 47 4f 54 4f 20 73 6b 69 70 5f 76 69      GOTO skip_vi
4250: 73 75 61 6c 53 74 75 64 69 6f 49 6e 73 74 61 6c  sualStudioInstal
4260: 6c 44 69 72 0d 0a 20 20 29 0d 0a 20 20 46 4f 52  lDir..  )..  FOR
4270: 20 2f 46 20 22 64 65 6c 69 6d 73 3d 22 20 25 25   /F "delims=" %%
4280: 44 20 49 4e 20 28 27 25 56 53 5f 57 48 45 52 45  D IN ('%VS_WHERE
4290: 49 53 5f 43 4d 44 25 27 29 20 44 4f 20 28 53 45  IS_CMD%') DO (SE
42a0: 54 20 56 49 53 55 41 4c 53 54 55 44 49 4f 49 4e  T VISUALSTUDIOIN
42b0: 53 54 41 4c 4c 44 49 52 3d 25 25 44 29 0d 0a 20  STALLDIR=%%D).. 
42c0: 20 3a 73 6b 69 70 5f 76 69 73 75 61 6c 53 74 75   :skip_visualStu
42d0: 64 69 6f 49 6e 73 74 61 6c 6c 44 69 72 0d 0a 20  dioInstallDir.. 
42e0: 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44 20   IF NOT DEFINED 
42f0: 56 49 53 55 41 4c 53 54 55 44 49 4f 49 4e 53 54  VISUALSTUDIOINST
4300: 41 4c 4c 44 49 52 20 28 0d 0a 20 20 20 20 25 5f  ALLDIR (..    %_
4310: 41 45 43 48 4f 25 20 56 69 73 75 61 6c 20 53 74  AECHO% Visual St
4320: 75 64 69 6f 20 22 25 56 49 53 55 41 4c 53 54 55  udio "%VISUALSTU
4330: 44 49 4f 56 45 52 25 22 20 69 73 20 6e 6f 74 20  DIOVER%" is not 
4340: 69 6e 73 74 61 6c 6c 65 64 2e 0d 0a 20 20 20 20  installed...    
4350: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a  GOTO :EOF..  )..
4360: 20 20 25 5f 41 45 43 48 4f 25 20 56 69 73 75 61    %_AECHO% Visua
4370: 6c 20 53 74 75 64 69 6f 20 22 25 56 49 53 55 41  l Studio "%VISUA
4380: 4c 53 54 55 44 49 4f 56 45 52 25 22 20 69 73 20  LSTUDIOVER%" is 
4390: 69 6e 73 74 61 6c 6c 65 64 2e 0d 0a 20 20 53 45  installed...  SE
43a0: 54 20 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53  T VISUALSTUDIOMS
43b0: 42 55 49 4c 44 44 49 52 3d 25 56 49 53 55 41 4c  BUILDDIR=%VISUAL
43c0: 53 54 55 44 49 4f 49 4e 53 54 41 4c 4c 44 49 52  STUDIOINSTALLDIR
43d0: 25 5c 4d 53 42 75 69 6c 64 5c 25 4d 53 42 55 49  %\MSBuild\%MSBUI
43e0: 4c 44 56 45 52 25 5c 62 69 6e 0d 0a 20 20 53 45  LDVER%\bin..  SE
43f0: 54 20 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53  T VISUALSTUDIOMS
4400: 42 55 49 4c 44 44 49 52 3d 25 56 49 53 55 41 4c  BUILDDIR=%VISUAL
4410: 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52  STUDIOMSBUILDDIR
4420: 3a 5c 5c 3d 5c 25 0d 0a 20 20 43 41 4c 4c 20 3a  :\\=\%..  CALL :
4430: 66 6e 5f 56 65 72 69 66 79 56 69 73 75 61 6c 53  fn_VerifyVisualS
4440: 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69 72 0d  tudioMsBuildDir.
4450: 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a  .  GOTO :EOF....
4460: 3a 66 6e 5f 56 65 72 69 66 79 56 69 73 75 61 6c  :fn_VerifyVisual
4470: 53 74 75 64 69 6f 4d 73 42 75 69 6c 64 44 69 72  StudioMsBuildDir
4480: 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 4e  ..  IF DEFINED N
4490: 4f 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42  OVISUALSTUDIOMSB
44a0: 55 49 4c 44 44 49 52 20 47 4f 54 4f 20 3a 45 4f  UILDDIR GOTO :EO
44b0: 46 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46 49  F..  IF NOT DEFI
44c0: 4e 45 44 20 56 49 53 55 41 4c 53 54 55 44 49 4f  NED VISUALSTUDIO
44d0: 4d 53 42 55 49 4c 44 44 49 52 20 28 0d 0a 20 20  MSBUILDDIR (..  
44e0: 20 20 25 5f 41 45 43 48 4f 25 20 56 69 73 75 61    %_AECHO% Visua
44f0: 6c 20 53 74 75 64 69 6f 20 64 69 72 65 63 74 6f  l Studio directo
4500: 72 79 20 69 73 20 6e 6f 74 20 64 65 66 69 6e 65  ry is not define
4510: 64 2e 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  d...    GOTO :EO
4520: 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45 46  F..  )..  IF DEF
4530: 49 4e 45 44 20 56 49 53 55 41 4c 53 54 55 44 49  INED VISUALSTUDI
4540: 4f 4d 53 42 55 49 4c 44 44 49 52 20 49 46 20 4e  OMSBUILDDIR IF N
4550: 4f 54 20 45 58 49 53 54 20 22 25 56 49 53 55 41  OT EXIST "%VISUA
4560: 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49  LSTUDIOMSBUILDDI
4570: 52 25 22 20 28 0d 0a 20 20 20 20 25 5f 41 45 43  R%" (..    %_AEC
4580: 48 4f 25 20 56 69 73 75 61 6c 20 53 74 75 64 69  HO% Visual Studi
4590: 6f 20 64 69 72 65 63 74 6f 72 79 20 64 6f 65 73  o directory does
45a0: 20 6e 6f 74 20 65 78 69 73 74 2c 20 75 6e 73 65   not exist, unse
45b0: 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41  tting.....    CA
45c0: 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69  LL :fn_UnsetVari
45d0: 61 62 6c 65 20 56 49 53 55 41 4c 53 54 55 44 49  able VISUALSTUDI
45e0: 4f 4d 53 42 55 49 4c 44 44 49 52 0d 0a 20 20 20  OMSBUILDDIR..   
45f0: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d   GOTO :EOF..  ).
4600: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 56 49  .  IF DEFINED VI
4610: 53 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c  SUALSTUDIOMSBUIL
4620: 44 44 49 52 20 49 46 20 4e 4f 54 20 45 58 49 53  DDIR IF NOT EXIS
4630: 54 20 22 25 56 49 53 55 41 4c 53 54 55 44 49 4f  T "%VISUALSTUDIO
4640: 4d 53 42 55 49 4c 44 44 49 52 25 5c 25 4d 53 42  MSBUILDDIR%\%MSB
4650: 55 49 4c 44 25 22 20 28 0d 0a 20 20 20 20 25 5f  UILD%" (..    %_
4660: 41 45 43 48 4f 25 20 46 69 6c 65 20 22 25 4d 53  AECHO% File "%MS
4670: 42 55 49 4c 44 25 22 20 6e 6f 74 20 69 6e 20 56  BUILD%" not in V
4680: 69 73 75 61 6c 20 53 74 75 64 69 6f 20 64 69 72  isual Studio dir
4690: 65 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69 6e  ectory, unsettin
46a0: 67 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20 3a  g.....    CALL :
46b0: 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65  fn_UnsetVariable
46c0: 20 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42   VISUALSTUDIOMSB
46d0: 55 49 4c 44 44 49 52 0d 0a 20 20 20 20 47 4f 54  UILDDIR..    GOT
46e0: 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d 0a 20 20 49  O :EOF..  )..  I
46f0: 46 20 44 45 46 49 4e 45 44 20 56 49 53 55 41 4c  F DEFINED VISUAL
4700: 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44 49 52  STUDIOMSBUILDDIR
4710: 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22 25   IF NOT EXIST "%
4720: 56 49 53 55 41 4c 53 54 55 44 49 4f 4d 53 42 55  VISUALSTUDIOMSBU
4730: 49 4c 44 44 49 52 25 5c 52 6f 73 6c 79 6e 5c 25  ILDDIR%\Roslyn\%
4740: 43 53 43 25 22 20 28 0d 0a 20 20 20 20 25 5f 41  CSC%" (..    %_A
4750: 45 43 48 4f 25 20 46 69 6c 65 20 22 25 43 53 43  ECHO% File "%CSC
4760: 25 22 20 6e 6f 74 20 69 6e 20 56 69 73 75 61 6c  %" not in Visual
4770: 20 53 74 75 64 69 6f 20 64 69 72 65 63 74 6f 72   Studio director
4780: 79 2c 20 75 6e 73 65 74 74 69 6e 67 2e 2e 2e 0d  y, unsetting....
4790: 0a 20 20 20 20 43 41 4c 4c 20 3a 66 6e 5f 55 6e  .    CALL :fn_Un
47a0: 73 65 74 56 61 72 69 61 62 6c 65 20 56 49 53 55  setVariable VISU
47b0: 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44  ALSTUDIOMSBUILDD
47c0: 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45 4f  IR..    GOTO :EO
47d0: 46 0d 0a 20 20 29 0d 0a 20 20 25 5f 41 45 43 48  F..  )..  %_AECH
47e0: 4f 25 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f  O% Visual Studio
47f0: 20 64 69 72 65 63 74 6f 72 79 20 22 25 56 49 53   directory "%VIS
4800: 55 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44  UALSTUDIOMSBUILD
4810: 44 49 52 25 22 20 76 65 72 69 66 69 65 64 2e 0d  DIR%" verified..
4820: 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a  .  GOTO :EOF....
4830: 3a 66 6e 5f 43 68 65 63 6b 42 75 69 6c 64 54 6f  :fn_CheckBuildTo
4840: 6f 6c 44 69 72 0d 0a 20 20 25 5f 41 45 43 48 4f  olDir..  %_AECHO
4850: 25 20 43 68 65 63 6b 69 6e 67 20 66 6f 72 20 62  % Checking for b
4860: 75 69 6c 64 20 74 6f 6f 6c 20 64 69 72 65 63 74  uild tool direct
4870: 6f 72 69 65 73 2e 2e 2e 0d 0a 20 20 49 46 20 44  ories.....  IF D
4880: 45 46 49 4e 45 44 20 56 49 53 55 41 4c 53 54 55  EFINED VISUALSTU
4890: 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 20 47 4f  DIOMSBUILDDIR GO
48a0: 54 4f 20 73 65 74 5f 76 69 73 75 61 6c 73 74 75  TO set_visualstu
48b0: 64 69 6f 5f 6d 73 62 75 69 6c 64 5f 74 6f 6f 6c  dio_msbuild_tool
48c0: 73 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20  s..  IF DEFINED 
48d0: 4d 53 42 55 49 4c 44 44 49 52 20 47 4f 54 4f 20  MSBUILDDIR GOTO 
48e0: 73 65 74 5f 6d 73 62 75 69 6c 64 5f 74 6f 6f 6c  set_msbuild_tool
48f0: 73 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20  s..  IF DEFINED 
4900: 46 52 41 4d 45 57 4f 52 4b 44 49 52 20 47 4f 54  FRAMEWORKDIR GOT
4910: 4f 20 73 65 74 5f 66 72 61 6d 65 77 6f 72 6b 5f  O set_framework_
4920: 74 6f 6f 6c 73 0d 0a 20 20 25 5f 41 45 43 48 4f  tools..  %_AECHO
4930: 25 20 4e 6f 20 62 75 69 6c 64 20 74 6f 6f 6c 20  % No build tool 
4940: 64 69 72 65 63 74 6f 72 69 65 73 20 66 6f 75 6e  directories foun
4950: 64 2e 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d  d...  GOTO :EOF.
4960: 0a 20 20 3a 73 65 74 5f 76 69 73 75 61 6c 73 74  .  :set_visualst
4970: 75 64 69 6f 5f 6d 73 62 75 69 6c 64 5f 74 6f 6f  udio_msbuild_too
4980: 6c 73 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 55  ls..  %_AECHO% U
4990: 73 69 6e 67 20 56 69 73 75 61 6c 20 53 74 75 64  sing Visual Stud
49a0: 69 6f 20 4d 53 42 75 69 6c 64 20 64 69 72 65 63  io MSBuild direc
49b0: 74 6f 72 79 20 22 25 56 49 53 55 41 4c 53 54 55  tory "%VISUALSTU
49c0: 44 49 4f 4d 53 42 55 49 4c 44 44 49 52 25 22 2e  DIOMSBUILDDIR%".
49d0: 2e 2e 0d 0a 20 20 43 41 4c 4c 20 3a 66 6e 5f 43  ....  CALL :fn_C
49e0: 6f 70 79 56 61 72 69 61 62 6c 65 20 56 49 53 55  opyVariable VISU
49f0: 41 4c 53 54 55 44 49 4f 4d 53 42 55 49 4c 44 44  ALSTUDIOMSBUILDD
4a00: 49 52 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 0d  IR BUILDTOOLDIR.
4a10: 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20  .  GOTO :EOF..  
4a20: 3a 73 65 74 5f 6d 73 62 75 69 6c 64 5f 74 6f 6f  :set_msbuild_too
4a30: 6c 73 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 55  ls..  %_AECHO% U
4a40: 73 69 6e 67 20 4d 53 42 75 69 6c 64 20 64 69 72  sing MSBuild dir
4a50: 65 63 74 6f 72 79 20 22 25 4d 53 42 55 49 4c 44  ectory "%MSBUILD
4a60: 44 49 52 25 22 2e 2e 2e 0d 0a 20 20 43 41 4c 4c  DIR%".....  CALL
4a70: 20 3a 66 6e 5f 43 6f 70 79 56 61 72 69 61 62 6c   :fn_CopyVariabl
4a80: 65 20 4d 53 42 55 49 4c 44 44 49 52 20 42 55 49  e MSBUILDDIR BUI
4a90: 4c 44 54 4f 4f 4c 44 49 52 0d 0a 20 20 47 4f 54  LDTOOLDIR..  GOT
4aa0: 4f 20 3a 45 4f 46 0d 0a 20 20 3a 73 65 74 5f 66  O :EOF..  :set_f
4ab0: 72 61 6d 65 77 6f 72 6b 5f 74 6f 6f 6c 73 0d 0a  ramework_tools..
4ac0: 20 20 25 5f 41 45 43 48 4f 25 20 55 73 69 6e 67    %_AECHO% Using
4ad0: 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
4ae0: 64 69 72 65 63 74 6f 72 79 20 22 25 46 52 41 4d  directory "%FRAM
4af0: 45 57 4f 52 4b 44 49 52 25 22 2e 2e 2e 0d 0a 20  EWORKDIR%"..... 
4b00: 20 43 41 4c 4c 20 3a 66 6e 5f 43 6f 70 79 56 61   CALL :fn_CopyVa
4b10: 72 69 61 62 6c 65 20 46 52 41 4d 45 57 4f 52 4b  riable FRAMEWORK
4b20: 44 49 52 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52  DIR BUILDTOOLDIR
4b30: 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d  ..  GOTO :EOF...
4b40: 0a 3a 66 6e 5f 56 65 72 69 66 79 42 75 69 6c 64  .:fn_VerifyBuild
4b50: 54 6f 6f 6c 44 69 72 0d 0a 20 20 49 46 20 4e 4f  ToolDir..  IF NO
4b60: 54 20 44 45 46 49 4e 45 44 20 42 55 49 4c 44 54  T DEFINED BUILDT
4b70: 4f 4f 4c 44 49 52 20 28 0d 0a 20 20 20 20 25 5f  OOLDIR (..    %_
4b80: 41 45 43 48 4f 25 20 42 75 69 6c 64 20 74 6f 6f  AECHO% Build too
4b90: 6c 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 6e  l directory is n
4ba0: 6f 74 20 64 65 66 69 6e 65 64 2e 0d 0a 20 20 20  ot defined...   
4bb0: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29 0d   GOTO :EOF..  ).
4bc0: 0a 20 20 49 46 20 44 45 46 49 4e 45 44 20 42 55  .  IF DEFINED BU
4bd0: 49 4c 44 54 4f 4f 4c 44 49 52 20 49 46 20 4e 4f  ILDTOOLDIR IF NO
4be0: 54 20 45 58 49 53 54 20 22 25 42 55 49 4c 44 54  T EXIST "%BUILDT
4bf0: 4f 4f 4c 44 49 52 25 22 20 28 0d 0a 20 20 20 20  OOLDIR%" (..    
4c00: 25 5f 41 45 43 48 4f 25 20 42 75 69 6c 64 20 74  %_AECHO% Build t
4c10: 6f 6f 6c 20 64 69 72 65 63 74 6f 72 79 20 64 6f  ool directory do
4c20: 65 73 20 6e 6f 74 20 65 78 69 73 74 2c 20 75 6e  es not exist, un
4c30: 73 65 74 74 69 6e 67 2e 2e 2e 0d 0a 20 20 20 20  setting.....    
4c40: 43 41 4c 4c 20 3a 66 6e 5f 55 6e 73 65 74 56 61  CALL :fn_UnsetVa
4c50: 72 69 61 62 6c 65 20 42 55 49 4c 44 54 4f 4f 4c  riable BUILDTOOL
4c60: 44 49 52 0d 0a 20 20 20 20 47 4f 54 4f 20 3a 45  DIR..    GOTO :E
4c70: 4f 46 0d 0a 20 20 29 0d 0a 20 20 49 46 20 44 45  OF..  )..  IF DE
4c80: 46 49 4e 45 44 20 42 55 49 4c 44 54 4f 4f 4c 44  FINED BUILDTOOLD
4c90: 49 52 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20  IR IF NOT EXIST 
4ca0: 22 25 42 55 49 4c 44 54 4f 4f 4c 44 49 52 25 5c  "%BUILDTOOLDIR%\
4cb0: 25 4d 53 42 55 49 4c 44 25 22 20 28 0d 0a 20 20  %MSBUILD%" (..  
4cc0: 20 20 25 5f 41 45 43 48 4f 25 20 46 69 6c 65 20    %_AECHO% File 
4cd0: 22 25 4d 53 42 55 49 4c 44 25 22 20 6e 6f 74 20  "%MSBUILD%" not 
4ce0: 69 6e 20 62 75 69 6c 64 20 74 6f 6f 6c 20 64 69  in build tool di
4cf0: 72 65 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69  rectory, unsetti
4d00: 6e 67 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20  ng.....    CALL 
4d10: 3a 66 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c  :fn_UnsetVariabl
4d20: 65 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 0d 0a  e BUILDTOOLDIR..
4d30: 20 20 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20      GOTO :EOF.. 
4d40: 20 29 0d 0a 20 20 49 46 20 44 45 46 49 4e 45 44   )..  IF DEFINED
4d50: 20 42 55 49 4c 44 54 4f 4f 4c 44 49 52 20 49 46   BUILDTOOLDIR IF
4d60: 20 4e 4f 54 20 45 58 49 53 54 20 22 25 42 55 49   NOT EXIST "%BUI
4d70: 4c 44 54 4f 4f 4c 44 49 52 25 5c 25 43 53 43 25  LDTOOLDIR%\%CSC%
4d80: 22 20 49 46 20 4e 4f 54 20 45 58 49 53 54 20 22  " IF NOT EXIST "
4d90: 25 42 55 49 4c 44 54 4f 4f 4c 44 49 52 25 5c 52  %BUILDTOOLDIR%\R
4da0: 6f 73 6c 79 6e 5c 25 43 53 43 25 22 20 28 0d 0a  oslyn\%CSC%" (..
4db0: 20 20 20 20 25 5f 41 45 43 48 4f 25 20 46 69 6c      %_AECHO% Fil
4dc0: 65 20 22 25 43 53 43 25 22 20 6e 6f 74 20 69 6e  e "%CSC%" not in
4dd0: 20 62 75 69 6c 64 20 74 6f 6f 6c 20 64 69 72 65   build tool dire
4de0: 63 74 6f 72 79 2c 20 75 6e 73 65 74 74 69 6e 67  ctory, unsetting
4df0: 2e 2e 2e 0d 0a 20 20 20 20 43 41 4c 4c 20 3a 66  .....    CALL :f
4e00: 6e 5f 55 6e 73 65 74 56 61 72 69 61 62 6c 65 20  n_UnsetVariable 
4e10: 42 55 49 4c 44 54 4f 4f 4c 44 49 52 0d 0a 20 20  BUILDTOOLDIR..  
4e20: 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 29    GOTO :EOF..  )
4e30: 0d 0a 20 20 25 5f 41 45 43 48 4f 25 20 42 75 69  ..  %_AECHO% Bui
4e40: 6c 64 20 74 6f 6f 6c 20 64 69 72 65 63 74 6f 72  ld tool director
4e50: 79 20 22 25 42 55 49 4c 44 54 4f 4f 4c 44 49 52  y "%BUILDTOOLDIR
4e60: 25 22 20 76 65 72 69 66 69 65 64 2e 0d 0a 20 20  %" verified...  
4e70: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e  GOTO :EOF....:fn
4e80: 5f 55 6e 71 75 6f 74 65 56 61 72 69 61 62 6c 65  _UnquoteVariable
4e90: 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e  ..  IF NOT DEFIN
4ea0: 45 44 20 25 31 20 47 4f 54 4f 20 3a 45 4f 46 0d  ED %1 GOTO :EOF.
4eb0: 0a 20 20 53 45 54 4c 4f 43 41 4c 0d 0a 20 20 53  .  SETLOCAL..  S
4ec0: 45 54 20 5f 5f 45 43 48 4f 5f 43 4d 44 3d 45 43  ET __ECHO_CMD=EC
4ed0: 48 4f 20 25 25 25 31 25 25 0d 0a 20 20 46 4f 52  HO %%%1%%..  FOR
4ee0: 20 2f 46 20 22 64 65 6c 69 6d 73 3d 22 20 25 25   /F "delims=" %%
4ef0: 56 20 49 4e 20 28 27 25 5f 5f 45 43 48 4f 5f 43  V IN ('%__ECHO_C
4f00: 4d 44 25 27 29 20 44 4f 20 28 0d 0a 20 20 20 20  MD%') DO (..    
4f10: 53 45 54 20 56 41 4c 55 45 3d 25 25 56 0d 0a 20  SET VALUE=%%V.. 
4f20: 20 29 0d 0a 20 20 53 45 54 20 56 41 4c 55 45 3d   )..  SET VALUE=
4f30: 25 56 41 4c 55 45 3a 22 3d 25 0d 0a 20 20 52 45  %VALUE:"=%..  RE
4f40: 4d 20 22 0d 0a 20 20 45 4e 44 4c 4f 43 41 4c 20  M "..  ENDLOCAL 
4f50: 26 26 20 53 45 54 20 25 31 3d 25 56 41 4c 55 45  && SET %1=%VALUE
4f60: 25 0d 0a 20 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a  %..  GOTO :EOF..
4f70: 0d 0a 3a 66 6e 5f 50 72 65 70 65 6e 64 54 6f 50  ..:fn_PrependToP
4f80: 61 74 68 0d 0a 20 20 49 46 20 4e 4f 54 20 44 45  ath..  IF NOT DE
4f90: 46 49 4e 45 44 20 25 31 20 47 4f 54 4f 20 3a 45  FINED %1 GOTO :E
4fa0: 4f 46 0d 0a 20 20 53 45 54 4c 4f 43 41 4c 0d 0a  OF..  SETLOCAL..
4fb0: 20 20 53 45 54 20 5f 5f 45 43 48 4f 5f 43 4d 44    SET __ECHO_CMD
4fc0: 3d 45 43 48 4f 20 25 25 25 31 25 25 0d 0a 20 20  =ECHO %%%1%%..  
4fd0: 46 4f 52 20 2f 46 20 22 64 65 6c 69 6d 73 3d 22  FOR /F "delims="
4fe0: 20 25 25 56 20 49 4e 20 28 27 25 5f 5f 45 43 48   %%V IN ('%__ECH
4ff0: 4f 5f 43 4d 44 25 27 29 20 44 4f 20 28 0d 0a 20  O_CMD%') DO (.. 
5000: 20 20 20 53 45 54 20 56 41 4c 55 45 3d 25 25 56     SET VALUE=%%V
5010: 0d 0a 20 20 29 0d 0a 20 20 53 45 54 20 56 41 4c  ..  )..  SET VAL
5020: 55 45 3d 25 56 41 4c 55 45 3a 22 3d 25 0d 0a 20  UE=%VALUE:"=%.. 
5030: 20 52 45 4d 20 22 0d 0a 20 20 45 4e 44 4c 4f 43   REM "..  ENDLOC
5040: 41 4c 20 26 26 20 53 45 54 20 50 41 54 48 3d 25  AL && SET PATH=%
5050: 56 41 4c 55 45 25 3b 25 50 41 54 48 25 0d 0a 20  VALUE%;%PATH%.. 
5060: 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66   GOTO :EOF....:f
5070: 6e 5f 43 6f 70 79 56 61 72 69 61 62 6c 65 0d 0a  n_CopyVariable..
5080: 20 20 49 46 20 4e 4f 54 20 44 45 46 49 4e 45 44    IF NOT DEFINED
5090: 20 25 31 20 47 4f 54 4f 20 3a 45 4f 46 0d 0a 20   %1 GOTO :EOF.. 
50a0: 20 49 46 20 22 25 32 22 20 3d 3d 20 22 22 20 47   IF "%2" == "" G
50b0: 4f 54 4f 20 3a 45 4f 46 0d 0a 20 20 53 45 54 4c  OTO :EOF..  SETL
50c0: 4f 43 41 4c 0d 0a 20 20 53 45 54 20 5f 5f 45 43  OCAL..  SET __EC
50d0: 48 4f 5f 43 4d 44 3d 45 43 48 4f 20 25 25 25 31  HO_CMD=ECHO %%%1
50e0: 25 25 0d 0a 20 20 46 4f 52 20 2f 46 20 22 64 65  %%..  FOR /F "de
50f0: 6c 69 6d 73 3d 22 20 25 25 56 20 49 4e 20 28 27  lims=" %%V IN ('
5100: 25 5f 5f 45 43 48 4f 5f 43 4d 44 25 27 29 20 44  %__ECHO_CMD%') D
5110: 4f 20 28 0d 0a 20 20 20 20 53 45 54 20 56 41 4c  O (..    SET VAL
5120: 55 45 3d 25 25 56 0d 0a 20 20 29 0d 0a 20 20 45  UE=%%V..  )..  E
5130: 4e 44 4c 4f 43 41 4c 20 26 26 20 53 45 54 20 25  NDLOCAL && SET %
5140: 32 3d 25 56 41 4c 55 45 25 0d 0a 20 20 47 4f 54  2=%VALUE%..  GOT
5150: 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 55 6e  O :EOF....:fn_Un
5160: 73 65 74 56 61 72 69 61 62 6c 65 0d 0a 20 20 53  setVariable..  S
5170: 45 54 4c 4f 43 41 4c 0d 0a 20 20 53 45 54 20 56  ETLOCAL..  SET V
5180: 41 4c 55 45 3d 25 31 0d 0a 20 20 49 46 20 44 45  ALUE=%1..  IF DE
5190: 46 49 4e 45 44 20 56 41 4c 55 45 20 28 0d 0a 20  FINED VALUE (.. 
51a0: 20 20 20 53 45 54 20 56 41 4c 55 45 3d 0d 0a 20     SET VALUE=.. 
51b0: 20 20 20 45 4e 44 4c 4f 43 41 4c 0d 0a 20 20 20     ENDLOCAL..   
51c0: 20 53 45 54 20 25 56 41 4c 55 45 25 3d 0d 0a 20   SET %VALUE%=.. 
51d0: 20 29 20 45 4c 53 45 20 28 0d 0a 20 20 20 20 45   ) ELSE (..    E
51e0: 4e 44 4c 4f 43 41 4c 0d 0a 20 20 29 0d 0a 20 20  NDLOCAL..  )..  
51f0: 43 41 4c 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72  CALL :fn_ResetEr
5200: 72 6f 72 4c 65 76 65 6c 0d 0a 20 20 47 4f 54 4f  rorLevel..  GOTO
5210: 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e 5f 52 65 73   :EOF....:fn_Res
5220: 65 74 45 72 72 6f 72 4c 65 76 65 6c 0d 0a 20 20  etErrorLevel..  
5230: 56 45 52 49 46 59 20 3e 20 4e 55 4c 0d 0a 20 20  VERIFY > NUL..  
5240: 47 4f 54 4f 20 3a 45 4f 46 0d 0a 0d 0a 3a 66 6e  GOTO :EOF....:fn
5250: 5f 53 65 74 45 72 72 6f 72 4c 65 76 65 6c 0d 0a  _SetErrorLevel..
5260: 20 20 56 45 52 49 46 59 20 4d 41 59 42 45 20 32    VERIFY MAYBE 2
5270: 3e 20 4e 55 4c 0d 0a 20 20 47 4f 54 4f 20 3a 45  > NUL..  GOTO :E
5280: 4f 46 0d 0a 0d 0a 3a 75 73 61 67 65 0d 0a 20 20  OF....:usage..  
5290: 45 43 48 4f 2e 0d 0a 20 20 45 43 48 4f 20 55 73  ECHO...  ECHO Us
52a0: 61 67 65 3a 20 25 7e 6e 78 30 20 5b 63 6f 6e 66  age: %~nx0 [conf
52b0: 69 67 75 72 61 74 69 6f 6e 5d 20 5b 70 6c 61 74  iguration] [plat
52c0: 66 6f 72 6d 5d 0d 0a 20 20 45 43 48 4f 2e 0d 0a  form]..  ECHO...
52d0: 20 20 47 4f 54 4f 20 65 72 72 6f 72 73 0d 0a 0d    GOTO errors...
52e0: 0a 3a 65 72 72 6f 72 73 0d 0a 20 20 43 41 4c 4c  .:errors..  CALL
52f0: 20 3a 66 6e 5f 53 65 74 45 72 72 6f 72 4c 65 76   :fn_SetErrorLev
5300: 65 6c 0d 0a 20 20 45 4e 44 4c 4f 43 41 4c 0d 0a  el..  ENDLOCAL..
5310: 20 20 45 43 48 4f 2e 0d 0a 20 20 45 43 48 4f 20    ECHO...  ECHO 
5320: 42 75 69 6c 64 20 66 61 69 6c 75 72 65 2c 20 65  Build failure, e
5330: 72 72 6f 72 73 20 77 65 72 65 20 65 6e 63 6f 75  rrors were encou
5340: 6e 74 65 72 65 64 2e 0d 0a 20 20 47 4f 54 4f 20  ntered...  GOTO 
5350: 65 6e 64 5f 6f 66 5f 66 69 6c 65 0d 0a 0d 0a 3a  end_of_file....:
5360: 6e 6f 5f 65 72 72 6f 72 73 0d 0a 20 20 43 41 4c  no_errors..  CAL
5370: 4c 20 3a 66 6e 5f 52 65 73 65 74 45 72 72 6f 72  L :fn_ResetError
5380: 4c 65 76 65 6c 0d 0a 20 20 45 4e 44 4c 4f 43 41  Level..  ENDLOCA
5390: 4c 0d 0a 20 20 45 43 48 4f 2e 0d 0a 20 20 45 43  L..  ECHO...  EC
53a0: 48 4f 20 42 75 69 6c 64 20 73 75 63 63 65 73 73  HO Build success
53b0: 2c 20 6e 6f 20 65 72 72 6f 72 73 20 77 65 72 65  , no errors were
53c0: 20 65 6e 63 6f 75 6e 74 65 72 65 64 2e 0d 0a 20   encountered... 
53d0: 20 47 4f 54 4f 20 65 6e 64 5f 6f 66 5f 66 69 6c   GOTO end_of_fil
53e0: 65 0d 0a 0d 0a 3a 65 6e 64 5f 6f 66 5f 66 69 6c  e....:end_of_fil
53f0: 65 0d 0a 25 5f 5f 45 43 48 4f 25 20 45 58 49 54  e..%__ECHO% EXIT
5400: 20 2f 42 20 25 45 52 52 4f 52 4c 45 56 45 4c 25   /B %ERRORLEVEL%
5410: 0d 0a                                            ..