在 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
中找到
我正在开发一个 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
中找到