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
Erstellen Sie ein Klassenbibliotheksprojekt.
Fügen Sie Verweise auf die folgenden Assemblys hinzu:
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
System.Drawing
Erstellen Sie eine Klasse, die die IExplorerNodeTypeProvider-Schnittstelle implementiert.
Fügen Sie der Klasse die folgenden Attribute hinzu:
System.ComponentModel.Composition.ExportAttribute.Anhand dieses Attributs kann Visual Studio Ihre IExplorerNodeTypeProvider-Implementierung erkennen und laden.Übergeben Sie den Typ IExplorerNodeTypeProvider an den Attributkonstruktor.
ExplorerNodeTypeAttribute.In einer Knotendefinition gibt dieses Attribut den Zeichenfolgenbezeichner für den neuen Knoten an.Es wird empfohlen, das Format Unternehmensname.Knotenname zu verwenden, um sicherzustellen, dass alle Knoten einen eindeutigen Bezeichner haben.
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
Erstellen Sie im Projekt der Knotendefinition eine Klasse, die die IExplorerNodeTypeExtension-Schnittstelle implementiert.
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.
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.
Behandeln Sie in der Implementierung der Initialize-Methode das NodeChildrenRequested-Ereignis des IExplorerNodeType-Parameters.
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