批处理脚本-如果成功,是否将msbuild输出转储到特定文件而不是控制台窗口?
我不知道该怎么做。我有一个批处理脚本文件,用于执行多个msbuild调用。我不希望msbuild输出污染我的命令窗口,而是希望它转储到日志文件中。我不知道如何做到这一点,但这是我目前的脚本:批处理脚本-如果成功,是否将msbuild输出转储到特定文件而不是控制台窗口?,msbuild,error-handling,batch-file,command,command-prompt,Msbuild,Error Handling,Batch File,Command,Command Prompt,我不知道该怎么做。我有一个批处理脚本文件,用于执行多个msbuild调用。我不希望msbuild输出污染我的命令窗口,而是希望它转储到日志文件中。我不知道如何做到这一点,但这是我目前的脚本: @ECHO Building shared libraries ... msbuild "SharedLibraries.sln" :: Not sure how to catch an unsuccessful build here for my GOTO ERROR? :: Copy dll file
@ECHO Building shared libraries ...
msbuild "SharedLibraries.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?
:: Copy dll files to specific location
@ECHO Building primary application...
msbuild "Myapp.sln"
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR?
:ERROR
那么,我如何:
添加
/fileLogger
命令行开关会导致MSBuild将生成输出写入当前目录中的文件MSBuild.log,而/noconsolelogger
开关会导致MSBuild不再写入标准输出。可以使用/flp
开关设置文件名,如下例所示:
msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=buildlog.txt
有关详细信息,请参阅
关于你的第二个问题;如果生成失败,MSBuild将返回一个非零的退出代码,可以像往常一样进行处理:
msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=SharedLibraries.log
if not errorlevel 0 goto ERROR
msbuild "Myapp.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=Myapp.txt
if not errorlevel 0 goto ERROR
:ERROR
当然,好的旧输出重定向也可以将输出写入文件而不是标准输出:
msbuild“SharedLibraries.sln”>SharedLibraries.log