Build 我想使用NAnt';如果要迭代文件夹中的文件,如何强制按字母顺序迭代?

Build 我想使用NAnt';如果要迭代文件夹中的文件,如何强制按字母顺序迭代?,build,nant,foreach,sql-order-by,Build,Nant,Foreach,Sql Order By,我有一个NAnt任务“ship”将当前的.sql脚本打包到一个构建中,然后用递增的int{{}{}{}命名该构建并将其复制到一个构建文件夹中 我有另一个NAnt任务来执行这些构建脚本 他们必须按顺序执行,但在我上次的尝试中,他们没有。我可以“强制”NAnt按字母顺序工作吗?为了满足我的好奇心,我试图用这个脚本重现这个问题: <?xml version="1.0"?> <project name="foreach.test" default="foreach.alpha">

我有一个NAnt任务“ship”将当前的.sql脚本打包到一个构建中,然后用递增的int{{}{}{}命名该构建并将其复制到一个构建文件夹中

我有另一个NAnt任务来执行这些构建脚本


他们必须按顺序执行,但在我上次的尝试中,他们没有。我可以“强制”NAnt按字母顺序工作吗?

为了满足我的好奇心,我试图用这个脚本重现这个问题:

<?xml version="1.0"?>
<project name="foreach.test" default="foreach.alpha">
  <target name="foreach.alpha">
    <foreach item="File" in="C:\foo" property="filename">
      <do>
        <echo message="${filename}" />
      </do>
    </foreach>
  </target>
</project>

文件名按字母顺序打印出来。因此,常规使用
foreach
似乎已经是问题的解决方案。

失败:

<fileset basedir="source\tsql\builds\" id="buildfiles">
  <include name="*.sql.template.sql" /> 
  <exclude name="*.sql" /> 
  <exclude name="*asSentTo*" />
</fileset>
<foreach item="File" property"filename">
  <in refid="buildfiles">
    <echo message="${filename}" /> 
  </in>
</foreach>

通过:


以下是如何使用文件集执行此操作

<fileset id="mySet">
  <include name="*.sql" />
</fileset>
<copy>  
  <fileset refid="mySet" />
</copy>
<foreach item="File" property="filename">
  <in>
    <items refid="mySet" />
  </in>
  <do>
    <echo message="Copied files: ${filename} to directory: ${Folder}." />
  </do>
</foreach>


请提供更多详细信息和代码片段。我尝试在一个目录中循环文件,显然这些文件是按字母顺序迭代的。你是如何美化你的XML的?Duncan要格式化XML或代码,你需要在每行之前至少添加4个空格。你有两个。我编辑了它的格式。您还可以选择文本并使用代码块图标(图标上的1和0)。您可以单击“编辑”查看我所做的操作。此语法对我不起作用:
nant 0.92出错:
元素上意外的属性“refid”
这已经八年了,所以我要生锈了!你已经定义“构建文件”了吗?
<fileset id="mySet">
  <include name="*.sql" />
</fileset>
<copy>  
  <fileset refid="mySet" />
</copy>
<foreach item="File" property="filename">
  <in>
    <items refid="mySet" />
  </in>
  <do>
    <echo message="Copied files: ${filename} to directory: ${Folder}." />
  </do>
</foreach>