Как адресовать / вызывать мое окно пользовательских инструментов в Visual Studio - PullRequest
1 голос
/ 17 октября 2019

Через это простое руководство по MSDN Я создаю свое собственное CustomToolWindow. Но я не могу найти способ наполнить его чем-то, потому что не могу найти способ ссылаться на него.

Цель состоит в том, чтобы объединить его с этим уроком , с помощью которого я смог построитьCustomDebuggerVisualizer. Это означает, что я хотел бы, чтобы мой CustomDebuggerVisualizer отображался как содержимое моего CustomToolWindow.

Я знаю, если этот метод , но я также не могу ссылаться на него, и я думаю, что вы не можете вызывать его извне самого Расширения.

Мне кажется, что яу меня нет понимания "мира времени выполнения", к которому я привык, и мира "Visual Studio Extension / SDK" здесь.

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Я пытался визуализировать точку, в которой я борюсь.

Визуализация

edit: Достигнут прогресс:

Когда кто-то находится внутри vsixпакет расширения, можно запросить объект dte через

using EnvDTE;
using EnvDTE80;  
using System.ComponentModel.Composition; 

DTE2 dte = (DTE2)ServiceProvider.GlobalProvider.GetService(typeof(DTE));

. Таким образом, можно получить доступ к отладчику, который содержит все виды информации, например, в этом случае он содержит текущие активные поля и т. д.

Следовательно, это средство для передачи данных из среды выполнения в окно инструментов. Проблема в том, как привести DebugVisualizer в уравнение, поскольку он не является частью пакета и, следовательно, вызов dte невозможен. Но я на это.

0 голосов
/ 18 октября 2019

Но я не могу найти способ заполнить это чем-то, потому что не могу найти способ сослаться на него.

Я проверил ту ссылку, которую вы указали выше, и нашел этот документ: Написание пользовательского визуализатора отладчика с использованием WPF для пользовательского интерфейса . Таким образом, кажется, что мы можем объединить визуализатор отладчика с WPF, и поскольку пользовательский элемент окна инструментов имеет схожие функции, такие как интерфейс WPF, я думаю, что мы можем заполнить логику в этих файлах xx.xaml и xx.xaml.cs, см .:

enter image description here

По сути, мы могли бы заполнить эти два файла логикой, которую мы можем использовать в Debugger Vusualizer+WPF. И чтобы вызвать одно настраиваемое окно инструментов, мы можем либо щелкнуть соответствующую команду (кнопку), либо использовать код, чтобы открыть окно настраиваемого инструмента. Что-то похожее на эту проблему :

            ToolWindowPane window = this.FindToolWindow(typeof(MyToolWindow), 0, true);
            if ((null == window) || (null == window.Frame))
            {
                throw new NotSupportedException(Resources.CanNotCreateWindow);
            }
            IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());

Я не уверен, почему вам нужно программно вызывать пользовательское окно, в соответствии с общим количеством, я думаю, вам нужна только кнопка в View=>Windows ... надеюсь, это поможет, и если я что-то неправильно пойму, не стесняйтесь поправлять меня:)

...