Создайте пользовательскую задачу MSBuild для изменения кода C # * перед * компиляцией - PullRequest
7 голосов
/ 30 сентября 2008

Я хочу создать пользовательскую задачу MSBuild, которая изменяет мои файлы .cs до того, как они будут скомпилированы csc.exe (но, конечно, это не меняет их на месте - я не хочу, чтобы реальные исходные файлы касались) , Мне известны PostSharp и другие AOP-фреймворки для .NET, и они не подходят для этого конкретного проекта, плюс я хотел бы узнать, как это сделать.

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

Спасибо Ричард

1 Ответ

5 голосов
/ 30 сентября 2008

Учитывая ваши ограничения, я думаю, что вы можете сделать следующее:

  1. Создание пользовательской задачи, которая принимает список файлов cs для адаптации перед компиляцией
  2. Пользовательская задача адаптирует список полученных файлов и создает их на диске
  3. Пользовательская задача устанавливает список измененных файлов в выходном параметре
  4. Вывод задачи заменит исходный список файлов cs
  5. Компиляция выполняется для измененных файлов.

Шаг 4 гарантирует, что файлы, которые в конечном итоге скомпилированы, будут теми, которые были изменены вашей пользовательской задачей.

В работе вы будете сильно полагаться на интерфейс ITaskItem .

...