Могу ли я использовать Roslyn для перезаписи тайм-кода компиляции?
-
27-10-2019 - |
Вопрос
Например, у меня
родовое словоМогу ли я получить AST класса Foo и переписать Bar во время компиляции, чтобы
родовое слово.
Решение
Перезапись времени компиляции прямо сейчас не поддерживается Roslyn, но синтаксические и семантические преобразования определенно поддерживаются.Фактически, взгляните на образец «ImplementNotifyPropertyChanged», включенный в CTP, чтобы увидеть что-то из того, что вы хотите сделать.Образец реализован как преобразование времени разработки и функция IDE, но вы можете извлечь логику и превратить ее в нечто вроде задачи предварительной сборки, которая перезаписывает файлы перед компиляцией.
Другие советы
Я не думаю, что это возможно в текущей версии CTP, которая была выпущена, поскольку компилятор существует как услуга, но нет такой вещи, которая позволяла бы вам подключиться к процессу компиляции, как вы можете сделать в Nemerle.