这是我的剧本:
<?xml version="1.0"?>
<project name="createAndPopulateDB" default="deploy">
<property name="sql.connstring" value="Provider=SQLOLEDB;Server=G-PC\sqlexpress;Integrated Security=SSPI" />
<property name="createDB" value="BuildTestDatabase.sql" />
<property name="populateDB" value="CreateTables.sql"/>
<target name="deploy">
<echo message="* Connecting to ${sql.connstring}"/>
<foreach item="File" property="sql.script">
<in>
<items>
<include name="${createDB}" />
<include name="${populateDB}" />
</items>
</in>
<do>
<echo message="* Executing ${path::get-file-name(sql.script)}"/>
<sql connstring="${sql.connstring}" delimiter="go" delimstyle="Line" batch="false" source="${sql.script}"/>
</do>
</foreach>
</target>
</project>
NAnt脚本应该调用两个tsql程序。第一个tsql用于删除数据库(如果存在),如果不存在,则创建它。第二个检查表是否存在表,如果存在,则删除它。同样,如果不是,则使用简单表填充创建的数据库。
我的问题是为什么它首先运行populateDB脚本?
答案 0 :(得分:1)
我发现确定tsql程序运行顺序的最佳方法是通过附加到不同目标的depends属性。这将以预定的顺序运行它们,并且如果NAnt脚本是存储库的一部分,则非常容易逻辑地遵循。