我希望从命令行调用的 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 的选项:基本上创建一个自定义记录器,其中包含两个 ConsoleLogger 作为成员。一个具有在命令行传递的详细程度,另一个是“最小”。记录器注册所有事件并将它们传递给其中一个记录器,具体取决于当前是否正在构建 csproj 文件。输出看起来与正常情况完全一样,只是它不包含来自 csproj 文件的数千行。