也许这只是一个疯狂的人的梦想,但..优化编译时在持续集成
在我的公司,我们有一个大的C#.NET项目,约25个解决方案(很老)和3.5〜MIO。同上。我面临的问题是:构建时间太慢,现在需要7分钟SSD(开发机器),15分钟+虚拟机与普通硬盘驱动器(将是我希望部署的TeamCity构建系统)。 我知道,构建系统应该是最快的,但这是我在短期内无法改变的。
我想通过编译最后一次提交所涉及的项目,从所有其他程序集中取出所有其他程序集,以缩短开发人员(最好在Teamcity机器上)的commit-build-unittest反馈循环。一个本地nuget服务器(团队城市服务器本身版本7.0)。
现在,这将极大地砍下反馈回路(15分钟,不到一分钟,给真正单元测试)为小的提交。我知道这种部分编译的问题是跳过编译错误(不匹配的接口可能被忽视)的可能性,但是通过运行第二个(Teamcity?)构建服务器实例来运行整个enchilada可以缓解这个问题,在平行下。但立即获得第一反馈是非常重要的我。
现在我的问题:是否有任何构建系统/持续集成系统可以处理这个任务?或者我是否必须编写自己的提交感知后台服务?这会有点令人讨厌,因为我们使用FinalBuilder脚本,而且这个格式似乎不能被任何API读取(但没有深入到那个深处)。
P.S .:另外,我想只对最后一次提交发生变化的项目运行单元测试,或者至少优先考虑它们。但这是事后的想法。
的[很慢编译在Visual Studio的时间]可能重复(HTTP ://stackoverflow.com/questions/55517/very-slow-compile-times-on-visual-studio) – Oded 2011-12-27 15:31:57
是的,看到了,但.. 1)这是很老了,2)许多答案都没有用C#可用, 3)少数的人,这将有助于(如一个与自定义VS加载项),不支持任何链接和被埋没所以内心深处我无法及时 – hko 2011-12-27 19:50:23
希望对一些有价值的反馈@hko我知道这似乎是一个难以想象的数字很多要浪费的点,但我会考虑在其他问题上给予奖励和/或按照答案中的每一个环节在另一边。 – 2012-01-01 22:32:05