命令行参数(http://msdn.microsoft.com/en-us/library/ms164311%28v=vs.100%29.aspx)的引用显示,对于控制台和文件记录器,有一个名为ShowTimestamp
的参数,它为带有时间戳的消息添加前缀。
这是如何工作的?复制文件:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<Target Name="Build">
<Message Text="Message" />
</Target>
</Project>
呼叫:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /clp:ShowTimestamp;ShowEventId dummy.msbuild.xml
我可以看到输出中显示ShowEventId
但缺少时间戳。我也试过/ flp,没有时间戳。
我尝试了PerformanceSummary
之类的其他参数,一切都很好。我尝试将工具版本设置为12.0
,结果相同。
答案 0 :(得分:3)
使用反射器我意识到ShowTimestamp
在ParallelConsoleLogger
类中仅使用 ,因此查看时间戳(不编写自己的记录器)的唯一方法是强制使用msbuild使用并行记录器,即我们需要指定/m
开关。
您的样本的结果命令行将是
msbuild.exe /clp:ShowTimestamp;ShowEventId /m dummy.msbuild.xml
如果计算机具有单核(如虚拟构建计算机),则/m
将像/m:1
一样工作并使用简单的记录程序,但您可以通过指定/m:2
来解决此问题。例如 - 它仍将使用唯一可用的核心,但它将使用ParallelConsoleLogger
。