CSharpCodeProvider, информация о прогрессе при компиляции

Я генерирую некоторый код в памяти из данных случайного размера. Это может генерировать что-то вроде 15К классов и может быть даже больше. Код хранится в списке, который я использую с CompileAssemblyFromSource метод из CSharpCodeProvider учебный класс.

Дело в том, что во время компиляции я хотел бы иметь отчет о прогрессе или, возможно, вывод того, что происходит. На данный момент мое приложение просто сидит и ждет 5 или 10 минут.

Есть ли способ узнать, сколько времени это займет, или, может быть, посмотреть, что происходит. Может быть, другая идея? Я надеюсь, что ответ не просто сообщение о том, что этот процесс может занять пару минут.

1 ответ

Насколько я знаю, нет никакого способа сообщить о ходе компиляции в CodeDOM или новом компиляторе Roslyn. Я думаю, что поддержка - это разумный запрос, поэтому вы можете рассмотреть вопрос о том, чтобы сделать запрос на репо в Roslyn.

В то же время, вы можете сообщить о прогрессе на основе предположения. Вы можете сделать предположение либо на основе входных данных (сейчас вы компилируете m килобайт кода, а компиляция n килобайт обычно занимает около t секунд, поэтому вы ожидаете, что это займет t / n · m секунд), либо на основе последней компиляции, или оба.

(Я также подумал о том, чтобы скомпилировать каждый файл в отдельный сетевой модуль и затем объединить их в одну сборку. Это позволило бы вам сообщать о прогрессе после компиляции каждого файла. Но я думаю, что это будет слишком сложно и не стоит того, чтобы получать отчеты о прогрессе.)

Другие вопросы по тегам