eseguire questo con msbuild:Come posso interrompere il batch di articoli dall'esecuzione di un batch quando ci sono zero elementi?
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Colors Include="Blue">
<Shade>Dark</Shade>
</Colors>
</ItemGroup>
<Target Name="Main">
<Message Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
</Target>
</Project>
Ed uscite:
Color: Dark Blue
Tutto bene, e buono, ma eliminare il colore e utilizzare questo:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Main" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
</ItemGroup>
<Target Name="Main">
<Message Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
</Target>
</Project>
E USCITE:
Color:
Perché un batch dell'attività del messaggio viene eseguito quando non ci sono elementi nel gruppo? Mi sarei aspettato per zero elementi, il batch avrebbe eseguito zero volte e non avrei visto "Colore:" seguito da nulla nell'output.
Sto facendo qualcosa di sbagliato o c'è una soluzione per questo?
Grazie.
Aggiornamento: ho trovato che si può fare:
<Message Condition="'@(Colors)'!=''" Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
Ma, se si sente insoddisfacente dover scrivere il codice in modo esplicito per il caso in cui non vi sono elementi ogni volta che il dosaggio viene utilizzato.
Una domanda ben posta. +1 –