在我的MSBuild脚本中获取当前日志记录详细级别

时间:2010-12-02 23:38:50

标签: msbuild

我们的MSBuild脚本使用Exec任务来调用一些命令行应用程序。这些应用程序中的大多数都有自己的输出详细程度设置,我希望这些设置与调用它们的MSBuild脚本的详细级别相同。

我有办法获得MSBuild进程的日志记录详细程度吗?

我以为我可以编写一个自定义任务来处理这个问题,但是在MSBuild API上查找,我找不到任何可以提供详细级别的属性或类。

2 个答案:

答案 0 :(得分:11)

在提出问题后不久,我注意到 MSBuild 4 System.Environment.CommandLine公开为属性函数,该函数应包含任何详细程度参数。通过以下的解析,您可以创建几个布尔属性,告诉您当前的日志记录级别:

<PropertyGroup>
  <CommandLine>$([System.Environment]::CommandLine.Trim().ToLower())</CommandLine>
  <IsQuietVerbosity>False</IsQuietVerbosity>
  <IsMinimalVerbosity>False</IsMinimalVerbosity>
  <IsNormalVerbosity>True</IsNormalVerbosity>
  <IsDetailedVerbosity>False</IsDetailedVerbosity>
  <IsDiagnosticVerbosity>False</IsDiagnosticVerbosity>
 </PropertyGroup>

 <PropertyGroup Condition="'$(CommandLine.Contains(&quot;/v&quot;))' == 'True'">
  <IndexOfLastVerbosityArg>$(CommandLine.LastIndexOf("/v"))</IndexOfLastVerbosityArg>
  <IndexOfVerbosityArg>$(CommandLine.IndexOf(":", $(IndexOfLastVerbosityArg)))</IndexOfVerbosityArg>
  <IndexOfVerbosityArg>$([MSBuild]::Add($(IndexOfVerbosityArg), 1))</IndexOfVerbosityArg>
  <IndexOfEndOfVerbosityArg>$(CommandLine.IndexOf(" ", $(IndexOfVerbosityArg)))</IndexOfEndOfVerbosityArg>
  <IndexOfEndOfVerbosityArg Condition="'$(IndexOfEndOfVerbosityArg)' == '-1'">$(CommandLine.Length)</IndexOfEndOfVerbosityArg>
  <LengthOfVerbosityArg>$([MSBuild]::Subtract($(IndexOfEndOfVerbosityArg), $(IndexOfVerbosityArg)))</LengthOfVerbosityArg>
  <VerbosityLevel>$(CommandLine.Substring($(IndexOfVerbosityArg), $(LengthOfVerbosityArg)).Trim())</VerbosityLevel>
  <IsQuietVerbosity>$(VerbosityLevel.StartsWith('q'))</IsQuietVerbosity>
  <IsMinimalVerbosity>$(VerbosityLevel.StartsWith('m'))</IsMinimalVerbosity>
  <IsNormalVerbosity>$(VerbosityLevel.StartsWith('n'))</IsNormalVerbosity>
  <IsDiagnosticVerbosity>$(VerbosityLevel.StartsWith('di'))</IsDiagnosticVerbosity>
  <IsDetailedVerbosity Condition="'$(IsDiagnosticVerbosity)' == 'False'">$(VerbosityLevel.StartsWith('d'))</IsDetailedVerbosity>
 </PropertyGroup>

请记住,这只适用于MSBuild 4 +。

丑?对。缺憾?也许。它有用吗烨!

答案 1 :(得分:1)

你不能:http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/510f07b4-c5f7-43a8-b7cb-e3c398841725/

相反,您可以设置您的属性(例如,使用命令行传递它),其中包含详细级别。