在 EnvDTE 中访问 dte.ActiveDocument.ActiveWindow 个对象

Access dte.ActiveDocument.ActiveWindow object in EnvDTE

我正在开发一个 Visual Studio 扩展(包),能够与 Workflow Foundation 4 活动进行交互。

如果 activity 在 "code view" 中打开,我可以访问 xaml 代码并解析它的属性。但是,如果 activity 在 "design mode" 中打开,我将无法访问 activity 元素或 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;
       //?????
       }

你们能给我点提示吗?

用反思完成这个..

dte.ActiveDocument.ActiveWindow.Object 这是一个 designerHostView 在 \Common7\IDE\Microsoft.VisualStudio.Activities.dll

中找到

ContentText 是一个 IDesignerViewToContractHostAdapter 在 \Common7\IDE\HostSideAdapters\Microsoft.VisualStudio.Activities.HostAdapter.dll

中找到