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