Msbuild可以动态生成Item.Metadata的列表吗?
问题描述:
<SqlToMetadataMultiTask ConnectionString="$(ConnectionString)">
<Output TaskParameter="Items" ItemName="MultiStats" />
<Output TaskParameter="Columns" ItemName="MultiColumns" />
</SqlToMetadataMultiTask>
<PropertyGroup>
<OutputFormat>@(MultiColumns,',')</OutputFormat>
</PropertyGroup>
<Message Text="[email protected](MultiColumns,',')"/>
<WriteLinesToFile File="SqlMetricsMulti.csv" Overwrite="true" Lines="@(MultiColumns,',')" />
<WriteLinesToFile File="SqlMetricsMulti.csv" Overwrite="false"
Lines="@(MultiStats->'%(db),%(num_procs),%(len_procs),%(cursors_refs),%(tt_refs),%(ifs),%(cases),%(where),%(join),%(ands),%(ors)')" />
我对每个数据库都有一行,并写出列标题,然后写出每个数据库的元数据存储指标。Msbuild可以动态生成Item.Metadata的列表吗?
我可以使这个任务更通用吗,以便动态生成数据输出列,就像列标题正在完成一样吗?在某些情况下,这将是另一个项目组根据输入动态白名单的自定义元数据。
答
在下面的链接中看到这个答案,它有点类似,将项目元数据写入文件。您需要查看ITaskItem的文档,特别是ITaskItem.CloneCustomMetadata以获取您要查找的通用行为。