Compartir a través de


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

  1. Cree un proyecto de biblioteca de clases

  2. Agregue referencias a los siguientes ensamblados:

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

    • System.Drawing

  3. Cree una clase que implemente la interfaz IExplorerNodeTypeProvider.

  4. Agregue a la clase los atributos siguientes:

  5. 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

  1. En el mismo proyecto que la definición de nodo, cree una clase que implemente la interfaz IExplorerNodeTypeExtension.

  2. 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.

  3. 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.

  4. En la implementación del método Initialize, controle el evento NodeChildrenRequested del parámetro IExplorerNodeType.

  5. 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