在我最后一个项目中,我们使用MSBuild作为脚本语言. (是的,真的!)我们还写了数百个定制的MSBuild任务,对于在C#中更有意义的部分. (我甚至写了一个MSBuild任务来生成一个MSBuild任务的样板代码,是的,它消耗了它.)
虽然我不建议任何人采取同样的方法,但我发现非常有帮助的一件事是内置的依赖关系管理.正如你所料,很容易表达依赖关系,让MSBuild照顾满足他们.例如,我们软件中的几乎每一步都需要将某些文件集复制到某个位置.你可以很容易地写:
Step1: CopyFiles Step2: CopyFiles,Step1
当您执行Step2时,它只会复制一次文件.
构建和满足依赖关系树在软件中很常见.我希望MSBuild团队采用其依赖管理代码,将其与MSBuild分离,并将其移动到任何可以使用它的.NET Framework中.不好意思,你觉得这是怎样管理依赖关系的最佳选择?