msbuild - 如何更改 MSBuild 任务的详细程度?

标签 msbuild verbosity

我希望从命令行调用的 msbuild 项目和从项目内的 MSBuild 任务调用的项目具有不同的详细程度。例如:

在 my.proj 内:

<Target Name=Foo>
  <MSBuild Projects="a.csproj;b.csproj;c.csproj"/>
</Target>

在命令行上:

msbuild /v:d my.proj

现在,当 MSBuild 任务生成 .csproj 文件时,它也会非常详细地进行操作。不过,我想用最少的冗长来构建它。

我知道可以像这样手动调用 msbuild:

<Target Name=Foo>
  <Exec Command="msbuild /v:m a.csproj"/>
  <Exec Command="msbuild /v:m b.csproj"/>
  <Exec Command="msbuild /v:m c.csproj"/>
</Target>

或者在实践中

<Target Name=Foo>
  <Exec Command="msbuild /v:m %(Projectlist.Identity)"/>
</Target>

当然,这工作得很好,但是我无法再获得 BuildInParallel 开关的功能(我认为不可能在不包含多个项目的情况下从命令行调用 msbuild在解决方案中?)

更新

我选择了 Ludwo 的选项:基本上创建一个自定义记录器,其中包含两个 ConsoleLoggers 作为成员。一种是在命令行中传递的详细信息,另一种是“最小”的。记录器注册所有事件,并将它们传递给其中一个记录器,具体取决于当前是否正在构建 csproj 文件。输出看起来与正常情况完全一样,只是它不包含 csproj 文件中的数千行。

最佳答案

你有两个选择(至少):)

  1. 创建一个额外的 msbuild 脚本来构建 abc 项目 “BuildABC.proj”

        <Target Name="BuildABC">
          <MSBuild Projects="a.csproj;b.csproj;c.csproj" BuildInParallel="true"/>
        </Target>
    

    在您的父脚本中使用 Exec 任务执行 MSBuild 并调用 简洁的“BuildABC.proj”

        <Target Name=Foo>
          <Exec Command="msbuild /v:m /m:2 BuildABC.proj"/>
        </Target>
    

    您必须将 BuildABC 项目中所需的所有父属性显式传递给 msbuild/p 参数。

  2. 使用自定义记录器。 See this how to do it 。在这种情况下,您可以使用原始脚本:

    <Target Name=Foo>
      <MSBuild Projects="a.csproj;b.csproj;c.csproj"/>
    </Target>
    

    在您的自定义记录器中,不要记录与以下内容相关的任何内容: ProjectStarted 和 ProjectFinished 事件之间的“a.csproj”项目,其中 e.ProjectFile ==“a.csproj”(在使用诊断详细信息构建父项目时禁用“a.csproj”项目上的诊断日志记录)

关于msbuild - 如何更改 MSBuild 任务的详细程度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865656/

相关文章:

java - java中private、static、final、public、abstract关键字的使用模式

svn - 使用 Subversion 在提交时构建

visual-studio-2010 - 选择 "Debug | Start new instance"时进行多次重建

c# - .NetFramework4.6.1 项目引用 .NetStandard2.0 上的 VSTS 构建任务失败

download - 如何获得 `pip install`的下载进度?

c++ - 将我的主输出库与我的测试可执行文件链接时出现问题

build - 将 TeamCity 与 MSBuild 和构建参数一起使用(未使用)

perl - 引用 Perl/Moose 包名称的简写?

haskell - 有没有一种简单的方法可以阻止 GHC 显示加载/链接的包?