我遇到了在使用签出文件重建解决方案时未记录日志的问题。我显然不明白发生了什么问题。所以我决定问社区。使用MSBuild记录不适用于BATCH中签出的文件
我有两种不同的解决方案,但我想使用目前无法使用的检出文件解决方案。
- 该解决方案应该获取BuildDrop的最新文件。
- 查看解决方案中的核心目录。
- 将BuildDrop文件复制到核心目录。
- 用新核心构建解决方案。
- (重建时登录到日志文件)
- 签入新核心。
解决方案,而结账(作品):
@echo off
REM Pfad in denen die Build Drops liegen
set MAINPATH=\\devteamx\BuildDrops\MAIN
REM Pfad in denen die Custom Solutions (Parent) liegen
set CUSTOMPATH=C:\Sources\RECY6\CUSTOM
REM Ausgabe Pfad für Custom dll's
set OUTDIR=C:\Sources\CustomRelease
rd %OUTDIR% /s /q
set ERRORLEVEL=
set neueste=
FOR /F %%i IN ('dir %MAINPATH% /b /ad-h /o-d') DO (
SET neueste=%%i
GOTO :end
)
:end
set MAINPATH=%MAINPATH%\%neueste%\x86\Release
echo Latest Builddrop of Main is in %MAINPATH%
xcopy /s /e /v /y /r /k %MAINPATH% %OUTDIR%\
set COREPATH=
setlocal EnableDelayedExpansion
for /f "tokens=1* delims=" %%s in ('dir %CUSTOMPATH% /b /ad') do (
call :Task %%s
)
echo Rebuild of Custom Solutions succeed pause exit
:Showerror
echo Build error occurred in %1
pause
exit
:Task %1
set COREPATH=%CUSTOMPATH%\%1\RECY\Core
set SLNPATH=%CUSTOMPATH%\%1\RECY
set ISCUSTOMBUILD=True
echo Corepath of %1 is %COREPATH%
echo %SLNPATH%
xcopy /s /e /v /y /r /k %MAINPATH% %COREPATH%
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
call %msBuildDir%\msbuild.exe /t:Rebuild %SLNPATH%\RECY.sln /p:Configuration=Release /p:OutDir=%OUTDIR% /l:FileLogger,Microsoft.Build.Engine;logfile="CustomDllRelease_%1_%date%.log"
if ERRORLEVEL 1 goto :Showerror %1
set msBuildDir=
echo CustomSolution: %1
解决方案与结帐(不工作):
@echo off
REM Pfad in denen die Build Drops liegen
set MAINPATH=\\devteamx\BuildDrops\MAIN
REM Pfad in denen die Custom Solutions (Parent) liegen
set CUSTOMPATH=C:\Sources\RECY6\CUSTOM
REM Ausgabe Pfad für Custom dll's
set OUTDIR=C:\Sources\CustomRelease
REM Visual Studio Version mit tf
set TFPFAD=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
REM Tf Command get Method um die letzten Aenderungen abzurufen
pushd "%CUSTOMPATH%"
"%TFPFAD%\tf.exe" get "$/RECY6/CUSTOM" /recursive
rd %OUTDIR% /s /q
set ERRORLEVEL=
set neueste=
FOR /F %%i IN ('dir %MAINPATH% /b /ad-h /o-d') DO (
SET neueste=%%i
GOTO :end
)
:end
set MAINPATH=%MAINPATH%\%neueste%\x86\Release
echo Latest Builddrop of Main is in %MAINPATH%
set COREPATH=
setlocal EnableDelayedExpansion
for /f "tokens=1* delims=" %%s in ('dir %CUSTOMPATH% /b /ad') do (
call :Task %%s
)
xcopy /s /e /v /y /r /k %MAINPATH% %OUTDIR%\
REM pushd "%CUSTOMPATH%"
REM "%TFPFAD%\tf.exe" undo "$/RECY6/CUSTOM" /recursive /noprompt
echo Rebuild of Custom Solutions succeed
pause
exit
:Showerror
pushd "%CUSTOMPATH%\%1"
"%TFPFAD%\tf.exe" undo "$/RECY6/CUSTOM" /recursive /noprompt
echo Build error occurred in %1
pause
exit
:Task %1
REM Tf Command Checkout Files
pushd "%CUSTOMPATH%\%1"
"%TFPFAD%\tf.exe" checkout "$/RECY6/CUSTOM/%1/RECY/Core" /recursive
if ERRORLEVEL 1 goto :Showerror %1
set COREPATH=%CUSTOMPATH%\%1\RECY\Core
set SLNPATH=%CUSTOMPATH%\%1\RECY
set ISCUSTOMBUILD=True
echo Corepath of %1 is %COREPATH%
echo %SLNPATH%
xcopy /s /e /v /y /r /k %MAINPATH% %COREPATH%
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
call %msBuildDir%\msbuild.exe /t:Rebuild %SLNPATH%\RECY.sln /p:Configuration=Release /p:OutDir=%OUTDIR% /l:FileLogger,Microsoft.Build.Engine;logfile=CustomDllRelease_%1_%date%.log
if ERRORLEVEL 1 goto :Showerror %1
set msBuildDir=
pushd "%CUSTOMPATH%\%1"
"%TFPFAD%\tf.exe" checkin "$/RECY6/CUSTOM/%1/RECY/Core" /force /recursive /noprompt /comment:"Custom dll Build Check-In %1 %date%" /override:"Automated Build Process"
if ERRORLEVEL 1 goto :Showerror %1
echo CustomSolution: %1
请问你的日志文件名包含空格?如果是这样,请在第二个脚本中的日志文件名称周围添加引号,就像它在第一个脚本中一样。 'logfile =“CustomDllRelease_%1_%date%.log”' – 2014-08-27 17:48:17
我已经试过了......并且没有日志文件不包含任何空格-.- – 2014-08-28 11:24:56