我正在运行TeamCity来构建一个.NET项目(更确切地说是几个项目)。
我应该使用Rebuild目标还是Build target?
我希望尽量减少构建时间,同时不会生成任何未更改的新版本项目。
使用“Build”目标是否安全?如果以前的项目输出被删除怎么办?我如何确认我可以安全地这样做?
答案 0 :(得分:6)
如果需要重建所有项目,则应使用 rebuild ,例如为了获得一致的时间戳或版本号(尽管通常,链接的AssemblyInfo.cs中的更改将触发构建同样。)
即使前一个版本的构建输出消失,或者即使构建恰好在没有构建输出的新构建代理上完成,构建也是完全安全的。在这种情况下,将建立所有必要的项目。
但是,您的sln / csproj文件中可能有依赖于(Re)构建的自定义MSBuild步骤,在这种情况下您需要更加小心,但除此之外,如果您愿意,请转到Build。 / p>
答案 1 :(得分:2)
您应该始终在持续集成服务器上执行rebuild
操作。
与您可能阅读的内容相反,可能会将先前版本的内容泄漏到当前版本中。泄漏几乎不是未能将源代码编译为二进制文件的结果,但是根据您用于执行构建的工具,可能存在无法复制的非代码文件,因为它们已经存在于输出目录,或未删除的已删除文件。
出于类似的原因,如果您能承担执行时间的成本,则还应始终在构建之前清理源树。要么销毁它并签出一份干净的副本,要么还原任何更改并删除任何不受源代码管理的文件。如果你不在每次构建时都这样做,至少要在“空闲时间”构建(例如,隔夜或周末构建)以及您打算实际交付给客户或部署的构建上执行此操作投入生产(理想情况下是质量保证)。
答案 2 :(得分:1)
Build生成运行项目所需的所有内容,保留未更改的程序集。重建强制完成任何涉及的程序集。除非特定情况(版本号,某些事物的依赖过程),否则使用构建来减少花费的时间是安全的。
答案 3 :(得分:1)
您应该使用Build来逐步构建项目。这是完全安全的。