我从随机大小的数据在内存中生成一些代码。这可以生成类似 15K 类的东西,甚至可能更多。 代码存储在我与 CSharpCodeProvider
类中的 CompileAssemblyFromSource
方法一起使用的 List 中。
问题是,在编译时,我希望有一个进度报告,或者可能是正在发生的事情的输出。目前,我的应用程序只是坐在那里等待 5 或 10 分钟。
有没有办法知道这将花费多少时间,或者看看发生了什么。也许是另一个想法?我希望答案不仅仅是一条消息,说这个过程可能需要几分钟。
据我所知,没有办法报告CodeDOM或新的Roslyn编译器中的编译进度。我认为支持这是一个合理的请求,因此您可能需要考虑在 Roslyn 存储库中提出功能请求。
同时,您可以根据猜测报告进度。您可以根据输入进行猜测(您现在正在编译 m KB 的代码,编译 n KB 通常需要大约 t 秒,因此您预计它需要 t /n · m 秒)或基于上次编译,或两者兼而有之。
(我还考虑将每个文件编译成一个单独的网络模块,然后将它们组合成一个程序集。这将允许您在编译每个文件后报告进度。但我认为这样做太复杂了,不值得仅仅为了获得进度报告。