.NET CompileAssemblyFromSource: определить, какой источник не удалось?

Я динамически компилирую код, используя CompileAssemblyFromSource с несколькими источниками.

В случае ошибки компиляции я могу получить номер строки и т. Д. Из Errors коллекция.

Однако номер строки - это номер строки во всех источниках. Что мне нужно, так это какой источник и номер строки из источника с ошибками (среди добавленных источников).

Это возможно без выполнения акробатики расчета?

1 ответ

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

В моем случае действительно есть только один модуль, потому что я объединяю весь источник в один модуль. Нет никакой путаницы в том, что означает "линия 143" в этой ситуации.

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