Доступ к объекту 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;
       //?????
       }

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


person Tom    schedule 07.10.2015    source источник


Ответы (1)


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

dte.ActiveDocument.ActiveWindow.Object — это DesignerHostView, найденный в \Common7\IDE\Microsoft.VisualStudio.Activities.dll

ContentText — это IDesignerViewToContractHostAdapter, который находится в папке \Common7\IDE\HostSideAdapters\Microsoft.VisualStudio.Activities.HostAdapter.dll.

person Tom    schedule 09.10.2015