Здравствуйте, Михаил Романов, Вы писали:
МР>Здравствуйте, AlexNek, Вы писали:
МР>Прошу прощения за задержку, скорее всего вы уже разобрались, но на всякий случай переспрошу.
AN>>AN>>IComponentModel componentModel = _package.GetService<SComponentModel, IComponentModel>();
AN>>var workspace = componentModel.GetService<VisualStudioWorkspace>();
AN>>foreach (Project project in solution.Projects)
AN>>{
AN>> foreach (Document document in project.Documents)
AN>> {
AN>> ...
AN>> }
AN>>}
AN>>
МР>Не видя общего примера судить сложно, но предположу, что вы работаете с Roslyn-овской моделью солюшена, в которой есть только файлы понятные компиляторам Roslyn (т.е. .cs, .vb и что-то там до кучи).
МР>Если же вы хотите добраться до полного солюшена, вам нужно работать через объекты самой студии. Если мне не изменяет память схема примерно такая:
МР>- как сервис (GetService(...)) получаете интерфейс DTE
МР>- у него получаете текущий Solution
МР>- перебираете Projects, а в них ProjectItems
МР>Единственное, я не пробовал это делать с новой моделью проектов, но вроде там обещали обратную совместимость, а модель проектов всё равно прячется внутри.
Спасибо большое, да с DTE можно получить всё.
Мне казалось что новая модель пришла на замену. Тем более что синтакическое дерево тоже нужно будет, хочется найти определенный элемент и заменить его (ну и свзь с редактором кода не потерять).
Еще вот не искал чем студия парсит XAML, там тоже надо будет найти элементы и заменить часть кода. Может быть знаете?