问题的现实是:编译的时候会编译失败,等待10分钟以后,返回异常,且不能再现。
追其代码(此处获lichdr指点迷津),发现调用csc.exe的地方用了win32的api中的CreateProcess(),
且timeout的时间被设定为600000,单位是ms.也就是10分钟。
类似的问题还存在于System.CodeDom.Compiler > CodeCompiler Class > Methods
FromFile 等相关的所有自动编译的方法。
至于是csc.exe中的问题,还是调用csc.exe的WIN32的API的那个CreateProcess的问题
我也不清楚,说成是谁的都好像不太有可能,但是反过来说是这两者中的任何一个有问题,也在情理之中。
头疼的是,问题不能再现。看来只有自己亲自调用csc.exe,确定一下是否是csc的问题了。
如果csc.exe有问题,那就要找ms讨个说法了。
那个600000ms的timeout的设定,实在是让人觉得不舒服,如果小程序出了问题,就要等10分钟后,才能返回异常;如果大的程序10分钟以上的编译规模的话,就不能正常编译了。
(还有那个vbc.exe是否或许也应该有这个问题,但是我没有实际做过,不能肯定,这里只是提醒小心。)