【问题标题】:Do items in MSBuild file maintain their order when passed to a Task?MSBuild 文件中的项目在传递给任务时是否保持顺序?
【发布时间】:2009-08-04 01:02:41
【问题描述】:

如果我在 MSBuild 文件中创建项目列表,那么项目在传递给任务时的顺序是什么?

例如在 ItemGroup 中指定了数据库脚本文件的列表。然后我将此 ItemGroup 提供给自定义任务?订单会得到保证还是订单会改变?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

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

    【讨论】:

    • MSDN 文档中是否有任何说明?
    • 我不知道,但我在 MS 的 Visual Studio 工作,我与 MSBuild 的开发人员交谈以获取此信息(因为我需要了解此保证以编写 F# 项目系统实现)。
    【解决方案2】:

    我相信订单是维持的。但是,根据您创建 ItemGroup 的方式,可能无法保证那里的订单。

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

    但是,如果您每次都以相同的方式构建它们,您可能可以放心地假设顺序得以维持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2012-02-20
      • 2017-05-07
      • 2019-11-01
      • 2019-12-19
      • 1970-01-01
      • 2010-10-05
      相关资源
      最近更新 更多