我正在研究我们的持续集成系统,我有兴趣模拟我们对意外长编译时间的系统处理。有没有办法让编译需要很长时间才能完成?或者也许强迫它进入某种循环,需要花费大量的时间来编译?我正在寻找像Thread.Sleep()一样简单的东西,只在编译而不是执行。
如何使用预处理程序指令?
有什么想法吗?
答案 0 :(得分:9)
这是一个MSBuild sleep task应该可以解决的问题。从.csproj文件中的BeforeBuild目标调用它,或者wherever is appropriate根据需要调用它。
MSBuild Community Tasks也有睡眠任务,所以如果你需要使用其他一些任务,我发现它非常有用。
答案 1 :(得分:7)
显然睡眠任务是要走的路。但是如果你对使C#编译器任意长的方式感兴趣,那么可以在源代码中编码问题,迫使重载决策算法执行O(n ^ m)算法。选择n和m足够大,你可以让编译器尽可能多地工作。
如果您有兴趣,这是我关于该主题的文章。
答案 2 :(得分:2)
我曾经有一位同事写了一个16,000行开关声明。编译时花了很长时间,然后当他扩展它时,它实际上破坏了编译器。不知怎的,我不确定那是你的想法。