Создайте пользовательскую задачу MSBuild для изменения кода C # * перед * компиляцией
-
03-07-2019 - |
Вопрос
Я хочу создать пользовательскую задачу MSBuild, которая изменяет мои файлы .cs до того, как они будут скомпилированы csc.exe (но, конечно, это не изменяет их на месте - я не хочу, чтобы затрагивались фактические исходные файлы).Я знаю о PostSharp и других фреймворках AOP для .NET и они не подходят для данного конкретного проекта, плюс я хотел бы узнать, как это сделать.
Что именно я должен сделать, чтобы это сработало?
Спасибо Ричард
Решение
Учитывая ваши ограничения, я думаю, вы можете сделать следующее:
- Создайте пользовательскую задачу, которая принимает список cs-файлов для адаптации перед компиляцией
- Пользовательская задача адаптирует список полученных файлов и создает их на диске
- Пользовательская задача устанавливает список измененных файлов в выходном параметре
- Выходные данные задачи заменят исходный список файлов cs
- Компиляция выполняется по измененным файлам.
Шаг 4 гарантирует, что файлы, которые в конечном итоге будут скомпилированы, являются теми, которые были изменены вашей пользовательской задачей.
Вы будете в значительной степени полагаться на ИТаскИтем интерфейс для выполнения задания.