MSBuild文件中的项在传递给任务时是否保持其顺序?

MSBuild文件中的项在传递给任务时是否保持其顺序?,msbuild,Msbuild,如果在MSBuild文件中创建项列表,则传递到任务时是否保持项的顺序 例如,在项目组中指定数据库脚本文件列表。然后我将此ItemGroup馈送到自定义任务?订单会有保证吗?或者订单会有变化吗?我相信订单会保持不变。但是,根据您创建项目组的方式,可能无法保证项目组的顺序 为了更完整,您可能应该使用Depends组构建脚本,以尝试按某种顺序获取它们,即引用数据插入依赖于存储的proc脚本,而存储的proc脚本依赖于模式脚本。您可以将每个项目定义为一个项目组,因此顺序是正确的 但是,如果每次都以相同的

如果在MSBuild文件中创建项列表,则传递到任务时是否保持项的顺序


例如,在项目组中指定数据库脚本文件列表。然后我将此ItemGroup馈送到自定义任务?订单会有保证吗?或者订单会有变化吗?

我相信订单会保持不变。但是,根据您创建项目组的方式,可能无法保证项目组的顺序

为了更完整,您可能应该使用Depends组构建脚本,以尝试按某种顺序获取它们,即引用数据插入依赖于存储的proc脚本,而存储的proc脚本依赖于模式脚本。您可以将每个项目定义为一个项目组,因此顺序是正确的


但是,如果每次都以相同的方式构建它们,则可以安全地假定顺序是保持的。

是的,MSBuild在ItemGroup中维护具有相同项类型的项列表的顺序。(例如,.fsproj中所有“”的顺序很重要,因为它指定了F#项目文件中文件的顺序。)

MSDN文档中是否有这样的内容?我不知道,但我在MS on Visual Studio工作,我与MSBuild的开发人员进行了交谈,以获取此信息(因为我需要理解这个保证来编写F#项目系统实现)。