MSBuild忽略自己的ShowTimestamp参数

时间:2015-01-06 08:16:41

标签: msbuild

命令行参数(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,结果相同。

1 个答案:

答案 0 :(得分:3)

使用反射器我意识到ShowTimestampParallelConsoleLogger类中仅使用 ,因此查看时间戳(不编写自己的记录器)的唯一方法是强制使用msbuild使用并行记录器,即我们需要指定/m开关。

您的样本的结果命令行将是

msbuild.exe /clp:ShowTimestamp;ShowEventId /m dummy.msbuild.xml

如果计算机具有单核(如虚拟构建计算机),则/m将像/m:1一样工作并使用简单的记录程序,但您可以通过指定/m:2来解决此问题。例如 - 它仍将使用唯一可用的核心,但它将使用ParallelConsoleLogger