1

这是我的脚本:

<?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 脚本?

4

1 回答 1

1

我发现确定 tsql 程序运行顺序的最佳方法是通过附加到单独目标的依赖属性。如果 NAnt 脚本是存储库的一部分,这将按预定顺序运行它们,并且在逻辑上非常容易遵循。

于 2012-09-09T14:57:17.190 回答