Повторная вставка комментариев XML в дерево исходных файлов C# из автоматически сгенерированных файлов [Assembly].xml

Моя ситуация:
Итак, на прошлой неделе я декомпилировал сборку.NET с ILSpy в C#; с тех пор я потратил массу усилий на массивацию файлов / проекта и т. д., чтобы все они снова работали правильно (было много маленьких ошибок [в основном вызванных процессом генерации кода ILSpy] и случайных проблем, и я ') исправляю их, пока я иду). Я сейчас в нескольких дюймах от своей цели, с финишной чертой в поле зрения!

Но вот, вот, я только что понял, что все комментарии XML отсутствуют. >.<

Я немного почесал и смог найти XML-файл intelli-sense со всеми сгенерированными в Visual Studio комментариями.

Что я хотел бы достичь:
Я хотел бы скопировать эти комментарии из сгенерированного XML-файла intelli-sense обратно в исходные файлы (конечно, в автоматическом режиме, поскольку в этой сборке около 5000 классов).

Мой вопрос:
Как мне поступить? Есть ли инструменты, которые могут помочь мне автоматизировать эту задачу?

2 ответа

Решение

Вы можете использовать Roslyn CTP для C#, чтобы создать инструмент, который вставит комментарии в исходные файлы. ( http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx) Roslyn создает древовидную структуру вашего кода C#, которой вы можете манипулировать программно, а затем записывать обратно в файл.

Поскольку файлы кода генерируются с использованием инструмента (ILSpy), стиль и форматирование кода (пробелы и отступы) будут одинаковыми практически для каждого файла кода. Что бы я сделал, это

  1. проверить, не является ли декомпиляция этой библиотеки классов 5000+ противозаконной,
  2. написать простой парсер для разбора файлов кода и поиска определений класса / метода / свойства
  3. проверьте, совпадает ли найденное с тем, что есть в xml
  4. Если все в порядке, я бы скопировал найденные теги xml в их новую позицию в файлах кода, поскольку теперь я знаю позиции определений в файле.

PS: просто напоминание, чтобы облегчить замену / вставку строки, всегда делайте вставку снизу файла вверх файла. таким образом, всякий раз, когда вы вставляете строку, индексы других строк, которые будут вставлены, останутся такими же.

Другие вопросы по тегам