44 votes

Comment effectuer la tâche d'exécution dans une "boucle" avec MSBuild ItemGroups ?

Comment effectuer la tâche d'exécution dans une "boucle" avec MSBuild ItemGroups ?

Au lieu de répéter cette commande encore et encore, comme ceci :

     <Exec ContinueOnError="false" Command="sqlcmd -S $(ServerName) $(SqlServerUser) -d $(DbName) -v TableName=%22account%22 -i data\add_sql_cache.sql -b" />
    <Exec ContinueOnError="false" Command="sqlcmd -S $(ServerName) $(SqlServerUser) -d $(DbName) -v TableName=%22services%22 -i data\add_sql_cache.sql -b" />
    <Exec ContinueOnError="false" Command="sqlcmd -S $(ServerName) $(SqlServerUser) -d $(DbName) -v TableName=%22servicesGroup%22 -i data\add_sql_cache.sql -b" />
    <Exec ContinueOnError="false" Command="sqlcmd -S $(ServerName) $(SqlServerUser) -d $(DbName) -v TableName=%22servicesCategory%22 -i data\add_sql_cache.sql -b" />

Je préfère définir un ItemGroup et simplement exécuter une "boucle". J'ai le ItemGroup vers le bas :

 <ItemGroup>
    <CachedTables Include="account" />
    <CachedTables Include="services" />
    <CachedTables Include="servicesGroup" />
    <CachedTables Include="servicesCategory" />

Mais en raison de la syntaxe étonnamment peu intuitive de MSBuild, je n'ai aucune idée de la façon d'effectuer la tâche Exec dans une boucle avec le ItemGroup ci-dessus comme entrée.

34voto

Adam Points 333

Si je comprends la question, cela peut être fait un peu plus simplement. L'exemple suivant utilise <Exec/> pour faire écho à chaque élément dans un <ItemGroup/>

   <ItemGroup>
    <MySpecialItem Include="one" />
    <MySpecialItem Include="two" />
    <MySpecialItem Include="three" />
  </ItemGroup>    

  <Target Name="MyTarget">
    <Exec Command="echo %(MySpecialItem.Identity)"/>
  </Target>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X