【发布时间】:2011-08-27 13:30:23
【问题描述】:
如何使用 MSBuild ItemGroups 在“循环”中执行 EXEC 任务?
而不是像这样一遍又一遍地重复这个命令:
<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" />
我宁愿定义一个 ItemGroup 并执行一个“循环”。我已经关闭了 ItemGroup:
<ItemGroup>
<CachedTables Include="account" />
<CachedTables Include="services" />
<CachedTables Include="servicesGroup" />
<CachedTables Include="servicesCategory" />
但由于 MSBuild 的语法非常不直观,我不知道如何以上面的 ItemGroup 作为输入循环执行 Exec 任务。
【问题讨论】:
-
我对此的回答已被删除,但我想郑重声明,自从写下这个问题以来,我的经历让我非常强烈地认为这是一个坏主意:你应该使用像 Psake 或 gulp 这样的工具来做这样的事情。
标签: msbuild