.NET CompileAssemblyFromSource: определить, какой источник не удалось? - PullRequest
5 голосов
/ 14 октября 2011

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

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

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

Возможно ли это, не занимаясь акробатикой вычислений?

1 Ответ

0 голосов
/ 15 октября 2011

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

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

...