1 | @ECHO OFF
|
---|
2 |
|
---|
3 | SET CLEANBEFOREBUILD=
|
---|
4 |
|
---|
5 | SET SELECTED=
|
---|
6 | SET CONFIGURATION=
|
---|
7 | SET PLATFORM=
|
---|
8 |
|
---|
9 | IF "%~1"=="" GOTO :prompt_solution
|
---|
10 |
|
---|
11 | SET SELECTED=%1
|
---|
12 | IF NOT EXIST %SELECTED% (
|
---|
13 | ECHO Solution file %SELECTED% could not be found.
|
---|
14 | GOTO :end
|
---|
15 | )
|
---|
16 | ECHO Building solution %SELECTED% ...
|
---|
17 | GOTO :config_selection
|
---|
18 |
|
---|
19 | :prompt_solution
|
---|
20 | SET /A COUNT=0
|
---|
21 | FOR /F "tokens=*" %%A IN ('dir /B *.sln') DO (
|
---|
22 | CALL :forloopbody "%%A"
|
---|
23 | )
|
---|
24 |
|
---|
25 | IF "%COUNT%"=="1" (
|
---|
26 | SET SELECTED=%SOLUTIONS.1%
|
---|
27 | ECHO Building %SOLUTIONS.1% as it is the only solution that was found ...
|
---|
28 | GOTO :config_selection
|
---|
29 | )
|
---|
30 |
|
---|
31 | ECHO Found the following solutions:
|
---|
32 | FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO ECHO %%A = %%B
|
---|
33 | ECHO.
|
---|
34 | SET /P SOLUTIONINDEX=Which solution to build? Type the number:
|
---|
35 |
|
---|
36 | SET SELECTED=""
|
---|
37 | FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO (
|
---|
38 | IF "%%A"=="%SOLUTIONINDEX%" SET SELECTED=%%B
|
---|
39 | )
|
---|
40 |
|
---|
41 | IF %SELECTED%=="" GOTO :eof
|
---|
42 |
|
---|
43 | :config_selection
|
---|
44 | IF "%~2"=="" GOTO :prompt_config
|
---|
45 |
|
---|
46 | SET CONFIGURATION=%~2
|
---|
47 | ECHO Building configuration %CONFIGURATION% ...
|
---|
48 | GOTO :platform_selection
|
---|
49 |
|
---|
50 | :prompt_config
|
---|
51 | SET /P CONFIGURATION=Which configuration to build [Release]:
|
---|
52 | IF "%CONFIGURATION%"=="" SET CONFIGURATION=Release
|
---|
53 |
|
---|
54 | :platform_selection
|
---|
55 | IF "%~3"=="" GOTO :prompt_platform
|
---|
56 |
|
---|
57 | SET PLATFORM=%~3
|
---|
58 | ECHO Building platform %PLATFORM% ...
|
---|
59 | GOTO :clean
|
---|
60 |
|
---|
61 | :prompt_platform
|
---|
62 | SET /P PLATFORM=Which platform to build [Any CPU]:
|
---|
63 | IF "%PLATFORM%"=="" SET PLATFORM=Any CPU
|
---|
64 |
|
---|
65 | :clean
|
---|
66 | IF "%~4"=="" GOTO :prompt_clean
|
---|
67 |
|
---|
68 | SET CLEANBEFOREBUILD=%~4
|
---|
69 | GOTO :main
|
---|
70 |
|
---|
71 | :prompt_clean
|
---|
72 | SET /P CLEANBEFOREBUILD=Would you like to clean before building [n]:
|
---|
73 | IF "%CLEANBEFOREBUILD%"=="" SET CLEANBEFOREBUILD=n
|
---|
74 |
|
---|
75 | :main
|
---|
76 | REM First find the path to the msbuild.exe by performing a registry query
|
---|
77 | FOR /F "tokens=1,3 delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"') DO (
|
---|
78 | IF "%%A"=="MSBuildToolsPath" SET MSBUILDPATH=%%B)
|
---|
79 |
|
---|
80 | REM Then execute msbuild to clean and build the solution
|
---|
81 | REM Disable that msbuild creates a cache file of the solution
|
---|
82 | SET MSBuildUseNoSolutionCache=1
|
---|
83 | REM Run msbuild to clean and then build
|
---|
84 | IF "%CLEANBEFOREBUILD%" NEQ "n" (
|
---|
85 | ECHO Cleaning ...
|
---|
86 | msbuild.exe %SELECTED% /target:Clean /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
|
---|
87 | )
|
---|
88 | ECHO Building ...
|
---|
89 | msbuild.exe %SELECTED% /target:Build /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /m:2 /nologo /verbosity:q /clp:ErrorsOnly
|
---|
90 |
|
---|
91 | ECHO.
|
---|
92 | ECHO DONE.
|
---|
93 |
|
---|
94 | :end
|
---|
95 |
|
---|
96 | PAUSE
|
---|
97 |
|
---|
98 | GOTO :eof
|
---|
99 |
|
---|
100 | REM This workaround is necessary so that COUNT gets reevaluated
|
---|
101 | :forloopbody
|
---|
102 | SET /A COUNT+=1
|
---|
103 | SET SOLUTIONS.%COUNT%=%1
|
---|
104 | GOTO :eof
|
---|