コマンドラインから呼び出されるmsbuildプロジェクトと、プロジェクト内から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のオプションを選択しました。基本的に、2つのConsoleLoggerをメンバーとして保持するカスタムロガーを作成します。1つはコマンドラインで冗長性が渡され、もう1つは「最小」です。ロガーはすべてのイベントを登録し、csprojファイルが現在作成されているかどうかに応じて、それらをロガーの1つに渡します。出力は、csprojファイルからの数千行が含まれていないことを除いて、通常とまったく同じように見えます。