Cómo: Agregar un nodo de SharePoint personalizado al Explorador de servidores
Puede agregar nodos personalizados bajo el nodo Conexiones de SharePoint en el Explorador de servidores.Esto es útil si desea mostrar los componentes de SharePoint que no se muestran de forma predeterminada en el Explorador de servidores.Para obtener más información, vea Extender el nodo Conexiones de SharePoint en el Explorador de servidores.
Para agregar un nodo personalizado, primero cree una clase que lo defina.A continuación, cree una extensión que agregue el nodo como elemento secundario a un nodo existente.
Para definir el nuevo nodo
Cree un proyecto de biblioteca de clases
Agregue referencias a los siguientes ensamblados:
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
System.Drawing
Cree una clase que implemente la interfaz IExplorerNodeTypeProvider.
Agregue a la clase los atributos siguientes:
System.ComponentModel.Composition.ExportAttribute.Este atributo permite que Visual Studio detecte y cargue la implementación de IExplorerNodeTypeProvider.Pase el tipo IExplorerNodeTypeProvider al constructor del atributo.
ExplorerNodeTypeAttribute.En una definición de nodo, este atributo especifica el identificador de cadena del nuevo nodo.Se recomienda utilizar el formato nombre compañía.nombre nodo para asegurarse de que todos los nodos tienen un identificador único.
En su implementación del método IExplorerNodeTypeProvider.InitializeType, utilice miembros del parámetro typeDefinition para configurar el comportamiento del nuevo nodo.Este parámetro es un objeto IExplorerNodeTypeDefinition que proporciona acceso a los eventos definidos en la interfaz IExplorerNodeEvents.
En el ejemplo de código siguiente se muestra cómo definir un nuevo nodo.En este ejemplo se supone que su proyecto contiene un icono denominado IconoNodoSecundarioPersonalizado como recurso incrustado.
<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; } }
Para agregar el nuevo nodo como elemento secundario de un nodo existente
En el mismo proyecto que la definición de nodo, cree una clase que implemente la interfaz IExplorerNodeTypeExtension.
Agregue el atributo System.ComponentModel.Composition.ExportAttribute a la clase.Este atributo permite que Visual Studio detecte y cargue la implementación de IExplorerNodeTypeExtension.Pase el tipo IExplorerNodeTypeExtension al constructor del atributo.
Agregue el atributo ExplorerNodeTypeAttribute a la clase.En una extensión de nodo, este atributo especifica el identificador del tipo de nodo que desea extender.
Para especificar tipos de nodos integrados proporcionados por Visual Studio, pase uno de los valores de la enumeración siguiente al constructor del atributo:
ExplorerNodeTypes: use estos valores para especificar los nodos de conexión del sitio (los nodos en los que aparece la dirección URL del sitio), los nodos de sitio o todos los otros nodos primarios del Explorador de servidores.
ExtensionNodeTypes: utilice estos valores para especificar uno de los nodos integrados que representa un componente individual de un sitio de SharePoint, como un nodo que representa una lista, campo o tipo de contenido.
En la implementación del método Initialize, controle el evento NodeChildrenRequested del parámetro IExplorerNodeType.
En el controlador de eventos NodeChildrenRequested, agregue el nuevo nodo a la colección de nodos secundarios del objeto Node que expone el parámetro de argumentos de evento.
En el ejemplo de código siguiente se muestra cómo agregar el nuevo nodo como un elemento secundario del nodo de sitio de SharePoint en el Explorador de servidores.
<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); } }
Ejemplo completo
El ejemplo de código siguiente proporciona el código completo para definir un nodo simple y agregarlo como un elemento secundario del nodo de sitio de SharePoint en el Explorador de servidores.
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);
}
}
}
Compilar el código
En este ejemplo se supone que su proyecto contiene un icono denominado IconoNodoSecundarioPersonalizado como recurso incrustado.Para este ejemplo también son necesarias referencias a los siguientes ensamblados:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
System.Drawing
Implementar la extensión
Para implementar la extensión del Explorador de servidores, cree un paquete de extensión (VSIX) de Visual Studio para el ensamblado y el resto de archivos que desee distribuir con la extensión.Para obtener más información, vea Extensiones de implementación para las Herramientas de SharePoint en Visual Studio.
Vea también
Tareas
Tutorial: Extender el Explorador de servidores para mostrar elementos web
Conceptos
Cómo: Extender un nodo de SharePoint en el Explorador de servidores
Otros recursos
Extender el nodo Conexiones de SharePoint en el Explorador de servidores