我需要构建一个 MSBUILD 脚本来执行自上次构建以来已更改的 .SQL 脚本。
我最初认为我可以使用<Copy>
将所有脚本从一个文件夹复制到另一个文件夹。任务并使用 CopiedFiles <Output>
用于复制任务。但是,复制任务返回它尝试复制的所有文件,而不是实际复制的文件。
我能够让 MSBUILD 通过 MSBUILD.ExtensionPack 执行 SQL 脚本,但我对这个感到摸不着头脑
最佳答案
您可以使用增量构建的概念来做到这一点。这个想法是,您将创建一个目标,然后指定输入和输出,这将是文件。 MSBuild 将比较输入文件和输出文件的时间戳。如果所有输出都是在所有输出之后创建的,则跳过目标。如果所有输入都是较新的,则将为所有文件执行所有目标。如果只有一部分已过时,则仅将这些部分传递给目标。有关这方面的更多信息,请参阅我的文章 Best Practices For Creating Reliable Builds, Part 2 中的使用增量构建部分.
此外,为了获取有关 MSBuild 的更多资源,我在 http://sedotech.com/Resources#MSBuild 处编制了一个列表。
关于MSBUILD 仅执行更改的 SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2211648/