Freigeben über


Gewusst wie: Hinzufügen eines benutzerdefinierten SharePoint-Knotens im Server-Explorer

Sie können benutzerdefinierte Knoten unter dem Knoten SharePoint-Verbindungen in Server-Explorer hinzufügen.Dies ist hilfreich, wenn Sie zusätzliche SharePoint-Komponenten anzeigen möchten, die standardmäßig in Server-Explorer nicht angezeigt werden.Weitere Informationen finden Sie unter Erweitern des SharePoint-Verbindungsknotens im Server-Explorer.

Um einen benutzerdefinierten Knoten hinzuzufügen, erstellen Sie zuerst eine Klasse, die den neuen Knoten definiert.Erstellen Sie anschließend eine Erweiterung, die den Knoten als untergeordnetes Element eines vorhandenen Knotens hinzufügt.

So definieren Sie den neuen Knoten

  1. Erstellen Sie ein Klassenbibliotheksprojekt.

  2. Fügen Sie Verweise auf die folgenden Assemblys hinzu:

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

    • System.Drawing

  3. Erstellen Sie eine Klasse, die die IExplorerNodeTypeProvider-Schnittstelle implementiert.

  4. Fügen Sie der Klasse die folgenden Attribute hinzu:

  5. Verwenden Sie in der Implementierung der IExplorerNodeTypeProvider.InitializeType-Methode Member des typeDefinition-Parameters, um das Verhalten des neuen Knotens zu konfigurieren.Dieser Parameter ist ein IExplorerNodeTypeDefinition-Objekt, das Zugriff auf die in der IExplorerNodeEvents-Schnittstelle definierten Ereignisse bietet.

    Im folgenden Codebeispiel wird das Definieren eines neuen Knotens veranschaulicht.In diesem Beispiel wird davon ausgegangen, dass das Projekt ein Symbol mit dem Namen CustomChildNodeIcon als eingebettete Ressource enthält.

    <Export(GetType(IExplorerNodeTypeProvider))> _
    <ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)> _
    Friend Class ExampleNodeTypeProvider
        Implements IExplorerNodeTypeProvider
        Friend Const NodeTypeId As String = "Contoso.ServerExplorerNodeExample"
    
        Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _
            Implements IExplorerNodeTypeProvider.InitializeType
            typeDefinition.DefaultIcon = _
                My.Resources.CustomChildNodeIcon.ToBitmap()
            typeDefinition.IsAlwaysLeaf = True
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeProvider))]
    [ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)]
    internal class ExampleNodeTypeProvider : IExplorerNodeTypeProvider
    {
        internal const string NodeTypeId = "Contoso.ServerExplorerNodeExample";
    
        public void InitializeType(IExplorerNodeTypeDefinition typeDefinition)
        {
            typeDefinition.DefaultIcon =
                Properties.Resources.CustomChildNodeIcon.ToBitmap();
            typeDefinition.IsAlwaysLeaf = true;
        }
    }
    

So fügen Sie den neuen Knoten als untergeordnetes Element eines vorhandenen Knotens hinzu

  1. Erstellen Sie im Projekt der Knotendefinition eine Klasse, die die IExplorerNodeTypeExtension-Schnittstelle implementiert.

  2. Fügen Sie der Klasse das System.ComponentModel.Composition.ExportAttribute-Attribut hinzu.Anhand dieses Attributs kann Visual Studio Ihre IExplorerNodeTypeExtension-Implementierung erkennen und laden.Übergeben Sie den IExplorerNodeTypeExtension-Typ an den Attributkonstruktor.

  3. Fügen Sie der Klasse das ExplorerNodeTypeAttribute-Attribut hinzu.In einer Knotenerweiterung gibt dieses Attribut den Zeichenfolgenbezeichner für den Knotentyp an, den Sie erweitern möchten.

    Übergeben Sie einen der folgenden Enumerationswerte an den Attributkonstruktor, um einen integrierten, von Visual Studio bereitgestellten Knotentyp anzugeben:

    • ExplorerNodeTypes: Geben Sie mithilfe dieser Werte Website-Verbindungsknoten (die Knoten, von denen Website-URLs angezeigt werden), Websiteknoten oder alle anderen übergeordneten Knoten im Server-Explorer an.

    • ExtensionNodeTypes: Verwenden Sie diese Werte, um einen der integrierten Knoten anzugeben, die auf einer SharePoint-Website eine einzelne Komponente darstellen, z. B. ein Knoten, der eine Liste, ein Feld oder einen Inhaltstyp darstellt.

  4. Behandeln Sie in der Implementierung der Initialize-Methode das NodeChildrenRequested-Ereignis des IExplorerNodeType-Parameters.

  5. Fügen Sie den neuen Knoten im NodeChildrenRequested-Ereignishandler der Auflistung der untergeordneten Knoten des Node-Objekts hinzu, das vom Ereignisargumentparameter verfügbar gemacht wird.

    Im folgenden Codebeispiel wird veranschaulicht, wie der neue Knoten als untergeordnetes Element des SharePoint-Websiteknotens im Server-Explorer hinzugefügt wird.

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
    Friend Class SiteNodeExtension
        Implements IExplorerNodeTypeExtension
    
        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested
        End Sub
    
        Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs)
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId, _
                "Custom Node", Nothing)
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    internal class SiteNodeExtension : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeChildrenRequested += NodeChildrenRequested;
        }
    
        private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e)
        {
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId,
                "Custom Node", null);
        }
    }
    

Vollständiges Beispiel

Das folgende Beispiel enthält den vollständigen Code, den Sie benötigen, um einen einfachen Knoten zu definieren und als untergeordnetes Element des SharePoint-Websiteknotens im Server-Explorer hinzuzufügen.

Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Explorer

Namespace Contoso.ServerExplorerExtension

    <Export(GetType(IExplorerNodeTypeProvider))> _
    <ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)> _
    Friend Class ExampleNodeTypeProvider
        Implements IExplorerNodeTypeProvider
        Friend Const NodeTypeId As String = "Contoso.ServerExplorerNodeExample"

        Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _
            Implements IExplorerNodeTypeProvider.InitializeType
            typeDefinition.DefaultIcon = _
                My.Resources.CustomChildNodeIcon.ToBitmap()
            typeDefinition.IsAlwaysLeaf = True
        End Sub
    End Class

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
    Friend Class SiteNodeExtension
        Implements IExplorerNodeTypeExtension

        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested
        End Sub

        Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs)
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId, _
                "Custom Node", Nothing)
        End Sub
    End Class
End Namespace
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Explorer;

namespace Contoso.ServerExplorerExtension
{
    [Export(typeof(IExplorerNodeTypeProvider))]
    [ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)]
    internal class ExampleNodeTypeProvider : IExplorerNodeTypeProvider
    {
        internal const string NodeTypeId = "Contoso.ServerExplorerNodeExample";

        public void InitializeType(IExplorerNodeTypeDefinition typeDefinition)
        {
            typeDefinition.DefaultIcon =
                Properties.Resources.CustomChildNodeIcon.ToBitmap();
            typeDefinition.IsAlwaysLeaf = true;
        }
    }

    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    internal class SiteNodeExtension : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeChildrenRequested += NodeChildrenRequested;
        }

        private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e)
        {
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId,
                "Custom Node", null);
        }
    }
}

Kompilieren des Codes

In diesem Beispiel wird davon ausgegangen, dass das Projekt ein Symbol mit dem Namen CustomChildNodeIcon als eingebettete Ressource enthält.Für dieses Beispiel sind außerdem Verweise auf die folgenden Assemblys erforderlich:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

  • System.Drawing

Bereitstellen der Erweiterung

Um die Server-Explorer-Erweiterung bereitzustellen, erstellen Sie ein Visual Studio-Erweiterungspaket (VSIX) für die Assembly und alle weiteren Dateien, die Sie mit der Erweiterung verteilen möchten.Weitere Informationen erhalten Sie unter Bereitstellen von Erweiterungen für die SharePoint-Tools in Visual Studio.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erweitern des Server-Explorers für die Anzeige von Webparts

Konzepte

Gewusst wie: Erweitern eines SharePoint-Knotens im Server-Explorer

Weitere Ressourcen

Erweitern des SharePoint-Verbindungsknotens im Server-Explorer