Как включить информацию о расположении исходного кода (файл / строка / столбец) в сборку .NET? - PullRequest
1 голос
/ 27 марта 2009

Мне нужно иметь возможность получить из сборки .NET местоположение определения класса / структуры / интерфейса (имя файла, begin_line, begin_column, end_line, end_column) в моих исходных файлах.

Первым решением, которое мне пришло в голову, было использование pdb quering api, но, похоже, такую ​​информацию я могу получить только для определения метода. Или, может быть, я ошибаюсь ...

Чтобы предоставить контекст, я пытаюсь создать надстройку для VS 2008, которая компилирует все проекты решений с помощью модели автоматизации VS, берет сборки и с помощью Reflections создает некоторое визуальное моделирование. Что мне нужно, это связь между исходным кодом и элементами модели. На самом деле я даже мог каким-то образом анализировать / изменять источники, чтобы они запомнили информацию о местоположении.

Любые идеи будут оценены.

Ответы [ 2 ]

0 голосов
/ 27 марта 2009

Ваша ситуация звучит так, будто вам нужно как-то разобрать исходный код. Возможно, стоит проверить DXCore от DevExpress, это может, по крайней мере, обеспечить основу для графики в Visual Studio и анализатор, который дает вам код DOM для всех поддерживаемых языков. Это также бесплатно, если вы создаете свои собственные надстройки.

http://www.devexpress.com/Downloads/Visual_Studio_Add-in/DXCore/

Возможно, это не то решение, которое вы ищете, но, по крайней мере, стоит посмотреть, сможете ли вы использовать то, что оно предлагает. Есть много довольно мощных плагинов, основанных на этом фундаменте. Например: http://jayflowers.com/WordPress/?p=137,

0 голосов
/ 27 марта 2009

Я предполагаю, что существующая диаграмма классов вам не поможет, и что вы не можете использовать инструмент, который уже знает, как перепроектировать C #? Sparx Enterprise Architect приходит на ум, потому что он может не только выполнять обратный инжиниринг - он также может запускать пользовательские преобразования полученных моделей. Вы должны иметь возможность генерировать из этого все, что захотите, как с точки зрения модели, так и с точки зрения артефактов.

Вы также можете учесть, что класс может быть частичным - один и тот же класс может существовать в нескольких частях.

...