Доступ к объекту dte.ActiveDocument.ActiveWindow в EnvDTE

Я разрабатываю расширение Visual Studio (пакет), способное взаимодействовать с действиями Workflow Foundation 4.

Если действие открывается в "представлении кода", я могу получить доступ к коду xaml и проанализировать его свойства. Но если действие открывается в "режиме разработки", у меня возникают проблемы с доступом к элементам действия или коду xaml.

var dte = (DTE2)serviceProvider.GetService(typeof(SDTE));
if (dte != null && dte.ActiveDocument != null)
{
   String xamlPath = dte.ActiveDocument.FullName;
   var document = (TextDocument)dte.ActiveDocument.Object("TextDocument");
   if (document != null)
   {
       //Code View
       var editPoint = document.CreateEditPoint(document.StartPoint);
       String xaml = editPoint.GetText(document.EndPoint);
   }else{
       //Designer ?????
       //(dte.ActiveDocument.ActiveWindow.Object.designerHostView).ContentText;
       //?????
       }

Ребята, вы можете дать мне подсказку?

1 ответ

Решение

Сделано это с отражением..

dte.ActiveDocument.ActiveWindow.Object, это designerHostView находится в \ Common7 \ IDE \ Microsoft.VisualStudio.Activities.dll

ContentText - это IDesignerViewToContractHostAdapter, находящийся в \Common7\IDE\HostSideAdapters\Microsoft.VisualStudio.Activities.HostAdapter.dll

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