ejecutar esta con msbuild:¿Cómo impido que el lote de elementos ejecute un lote cuando no hay ningún elemento?
<?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>
Y SALIDAS:
Color: Dark Blue
Todo bien y bueno, pero eliminar el color y utilizar esta:
<?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>
Y SALIDAS:
Color:
¿Por qué se está ejecutando un lote de la tarea de Mensaje cuando no hay elementos en el grupo? Hubiera esperado cero elementos, el lote se ejecutaría cero veces y no vería "Color:" seguido de nada en la salida.
¿Estoy haciendo algo mal o hay una solución para esto?
Gracias.
Actualización: que he encontrado que puede hacer:
<Message Condition="'@(Colors)'!=''" Text="Color: %(Colors.Shade) %(Colors.Identity)"/>
Pero, si se siente insatisfactoria a tener que escribir código de forma explícita para el caso en que no hay elementos que se utiliza cada vez que la dosificación.
Pregunta bien formulada. +1 –