Удаление TreatErrorsAsWarnings

mpt-csproj
 
У меня есть директория с исходниками с git (там репозиторий в директории .git)
У меня есть директория с исходниками, распакованными из архива (сложноопределимой версии)
У меня есть директория для файлов с патчами

Мне нужна утилита, которая просмотрит все .csproj-файлы в репозитории и поудаляет оттуда
TreatWarningAsError

Примеры вызова:
mpt-csproj --remove-warnings-as-errors --in=work/src/my.csproj
    Редактирует один файл
mpt-csproj --remove-warnings-as-errors --dir=work --recursive
    Редактирует файлы на месте
mpt-csproj --remove-warnings-as-errors --dir=work --recursive --as-unified-patch my.patch
    Вместо прямого редактирования создаёт патч

сделать mpt.eclass
из .ebuild-а:
inherit mpt
src_prepare() {
remove_treat_warnings_as_errors
}

Как удалять более правильно

регэкспы - это неправильный способ редактирования XML.
тут есть три варианта:
1) оставить как есть
2) переделать на Eto.Parse
3) подключить full-fidelity библиотеку парсинга XML

Как формировать Unified Diff

Идей нет
http://stackoverflow.com/questions/65199/c-sharp-compare-algorithms
http://stackoverflow.com/questions/138331/any-decent-text-diff-merge-engine-for-net
http://stackoverflow.com/questions/3764107/c-sharp-diff-algorithm-for-text
http://stackoverflow.com/questions/5550688/basic-file-version-diff-algorithm

Как формировать патчи в RFC

Идей нет