我遇到了在使用簽出文件重建解決方案時未記錄日誌的問題。我顯然不明白髮生了什麼問題。所以我決定問社區。使用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