当使用通配符从文件中创建MSBuild项时,
<ItemGroup>
<Scripts>$(ScriptsDirectory)\**\*.sql</Scripts>
</ItemGroup>这些文件似乎总是按路径按字母顺序排序。
然而,这类订单有保证吗--我能依赖它吗?
发布于 2011-08-13 20:55:02
是的,MSBuild总是按路径按字母顺序排序,以保证可重复性。(我的新书"MSBuild诡计“中谈到了这一点)
发布于 2012-06-13 13:58:08
我需要根据实际的文件名,而不是完整的路径,对文件的ItemGroup进行排序。所以我写了一个MSBuild任务来完成这个任务,希望它能帮上忙.
发布于 2015-11-30 22:06:47
一段时间前,我遇到了一个从Visual 2008到2010的奇性,它使用通配符创建了一个ItemGroup。以下划线字符“_”开头的文件名从结果的第一位一直到最后。
当时,我使用MSBuild扩展包解决了这个问题。这提供了一个TaskAction来显式地排序一个ItemGroup。
例如。
<!-- Sort an ItemGroup alphabetically -->
<MSBuild.ExtensionPack.Framework.MsBuildHelper TaskAction="Sort" InputItems1="@(MainDataFiles)">
<Output TaskParameter="OutputItems" ItemName="sorted"/>
</MSBuild.ExtensionPack.Framework.MsBuildHelper>
<Message Text="Sorted Items: %(sorted.Identity)"/> https://stackoverflow.com/questions/7050552
复制相似问题