So erhalten Sie das ausgewählte Verbindungsknotenobjekt des VS Server Explorer-Fensters DDEX

Ich füge einige Optionen für den Verbindungsknoten im Server-Explorer für meine VS-Erweiterung hinzu. Für eine der Menüoptionen, die ich hinzugefügt habe, muss ich die Verbindungszeichenfolge der ausgewählten Verbindung abrufen. Daher habe ich dies versucht, indem ich im BeforeQueryStatus-Ereignis und auch in der Befehlshandlermethode Code hinzugefügt habe. Aber es sieht so aus, als würde mir etwas fehlen, da ich jedes Mal, wenn ich eine Instanz des DataViewHierarchyAccessor erhalten möchte, einen Nullwert erhalte. Obwohl, wenn ich das gleiche mache, aber in einer niedrigeren Ebene Knoten funktioniert gut. Ich habe den folgenden Code ohne Glück verwendet:

IVsDataExplorerNodeSelection nodeSelection = (IVsDataExplorerNodeSelection) Package.GetGlobalService (typeof (IVsDataExplorerNodeSelection));

IVsUIHierarchy hierarchy = Marshal.GetTypedObjectForIUnknown (hierarchyPtr, typeof (IVsUIHierarchy)) als IVsUIHierarchy;

Hat jemand etwas Ähnliches für den Verbindungsknoten des Server-Explorer-Fensters getan?

Aktualisieren:

Es sieht so aus, als hätte ich Fortschritte gemacht. Ich habe es einfach versucht:

EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
    {
        foreach (UIHierarchyItem selItem in selectedItems)
        {
            SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
            string name = prjItem.Name;
        }
    }

Jetzt ist meine Frage, ob es einen besseren Typ gibt, um die Liste der ausgewählten Objekte zu werfen? anstelle von EnvDTE.SelectedItem.

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage