Cómo: agregar un nodo de SharePoint personalizado al explorador de servidoresHow to: Add a custom SharePoint node to Server Explorer

Puede agregar nodos personalizados bajo el conexiones de SharePoint nodo Explorador de servidores.You can add custom nodes under the SharePoint Connections node in Server Explorer. Esto es útil cuando desea mostrar los componentes de SharePoint adicionales que no se muestran en Explorador de servidores de forma predeterminada.This is useful when you want to display additional SharePoint components that are not displayed in Server Explorer by default. Para obtener más información, consulte extender el nodo Conexiones de SharePoint en el Explorador de servidores.For more information, see Extend the SharePoint connections node in Server Explorer.

Para agregar un nodo personalizado, primero cree una clase que define el nuevo nodo.To add a custom node, first create a class that defines the new node. A continuación, cree una extensión que agrega el nodo como un elemento secundario de un nodo existente.Then create an extension that adds the node as a child of an existing node.

Para definir el nuevo nodoTo define the new node

  1. Cree un proyecto de biblioteca de clases.Create a class library project.

  2. Agregue referencias a los siguientes ensamblados:Add references to the following assemblies:

    • Microsoft.VisualStudio.SharePointMicrosoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.ExtensionsMicrosoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.CompositionSystem.ComponentModel.Composition

    • System.DrawingSystem.Drawing

  3. Cree una clase que implemente la interfaz IExplorerNodeTypeProvider.Create a class that implements the IExplorerNodeTypeProvider interface.

  4. Agregue los siguientes atributos a la clase:Add the following attributes to the class:

  5. En la implementación de la InitializeType método, los miembros del uso de la typeDefinition parámetro para configurar el comportamiento del nuevo nodo.In your implementation of the InitializeType method, use members of the typeDefinition parameter to configure the behavior of the new node. Este parámetro es un IExplorerNodeTypeDefinition objeto que proporciona acceso a los eventos definidos en el IExplorerNodeEvents interfaz.This parameter is an IExplorerNodeTypeDefinition object that provides access to the events defined in the IExplorerNodeEvents interface.

    En el ejemplo de código siguiente se muestra cómo definir un nuevo nodo.The following code example demonstrates how to define a new node. En este ejemplo se da por supuesto que el proyecto contiene un icono denominado IconoNodoSecundarioPersonalizado como recurso incrustado.This example assumes that your project contains an icon named CustomChildNodeIcon as an embedded resource.

    <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 un elemento secundario de un nodo existenteTo add the new node as a child of an existing node

  1. En el mismo proyecto que la definición de nodo, cree una clase que implementa el IExplorerNodeTypeExtension interfaz.In the same project as your node definition, create a class that implements the IExplorerNodeTypeExtension interface.

  2. Agregue el ExportAttribute a la clase de atributo.Add the ExportAttribute attribute to the class. Este atributo permite que Visual Studio detecte y cargue su IExplorerNodeTypeExtension implementación.This attribute enables Visual Studio to discover and load your IExplorerNodeTypeExtension implementation. Pase el IExplorerNodeTypeExtension tipo al constructor del atributo.Pass the IExplorerNodeTypeExtension type to the attribute constructor.

  3. Agregue el ExplorerNodeTypeAttribute a la clase de atributo.Add the ExplorerNodeTypeAttribute attribute to the class. En una extensión de nodo, este atributo especifica el identificador de cadena para el tipo de nodo que desea extender.In a node extension, this attribute specifies the string identifier for the type of node that you want to extend.

    Para especificar los tipos de nodo integradas proporcionados por Visual Studio, pase uno de los siguientes valores de enumeración al constructor del atributo:To specify built-in node types provided by Visual Studio, pass one of the following enumeration values to the attribute constructor:

    • ExplorerNodeTypes: Use estos valores para especificar los nodos de conexión de sitio (los nodos que muestran direcciones URL del sitio), nodos de sitio o todos los demás nodos primarios en Explorador de servidores.ExplorerNodeTypes: Use these values to specify site connection nodes (the nodes that display site URLs), site nodes, or all other parent nodes in Server Explorer.

    • ExtensionNodeTypes: Use estos valores para especificar uno de los nodos integrados que representan un componente individual en un sitio de SharePoint, como un nodo que representa una lista, campo o tipo de contenido.ExtensionNodeTypes: Use these values to specify one of the built-in nodes that represent an individual component on a SharePoint site, such as a node that represents a list, field, or content type.

  4. En la implementación de la Initialize método, el identificador de la NodeChildrenRequested eventos de la IExplorerNodeType parámetro.In your implementation of the Initialize method, handle the NodeChildrenRequested event of the IExplorerNodeType parameter.

  5. En el NodeChildrenRequested controlador de eventos, agregue el nuevo nodo a la colección de nodos secundarios de la Node objeto expuesto por el parámetro de argumentos de evento.In the NodeChildrenRequested event handler, add the new node to the child nodes collection of the Node object that is exposed by the event arguments parameter.

    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 Explorador de servidores.The following code example demonstrates how to add the new node as a child of the SharePoint site node in Server Explorer.

    <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 completoComplete example

En el ejemplo de código siguiente se proporciona el código completo para definir un nodo simple y agregarlo como elemento secundario del nodo de sitio de SharePoint en Explorador de servidores.The following code example provides the complete code to define a simple node and add it as a child of the SharePoint site node in Server Explorer.

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);
        }
    }
}

Compilación del códigoCompiling the code

En este ejemplo se da por supuesto que el proyecto contiene un icono denominado IconoNodoSecundarioPersonalizado como recurso incrustado.This example assumes that your project contains an icon named CustomChildNodeIcon as an embedded resource. Este ejemplo también requiere referencias a los ensamblados siguientes:This example also requires references to the following assemblies:

  • Microsoft.VisualStudio.SharePointMicrosoft.VisualStudio.SharePoint

  • System.ComponentModel.CompositionSystem.ComponentModel.Composition

  • System.DrawingSystem.Drawing

Implementar la extensiónDeploy the extension

Para implementar el Explorador de servidores extensión, cree un Visual StudioVisual Studio paquete de extensión (VSIX) para el ensamblado y otros archivos que desea distribuir con la extensión.To deploy the Server Explorer extension, create a Visual StudioVisual Studio extension (VSIX) package for the assembly and any other files that you want to distribute with the extension. Para obtener más información, consulte implementen extensiones para las herramientas de SharePoint en Visual Studio.For more information, see Deploy extensions for the SharePoint Tools in Visual Studio.

Vea tambiénSee also

Extender el nodo Conexiones de SharePoint en el Explorador de servidores Extend the SharePoint connections node in Server Explorer
Cómo: Extender un nodo de SharePoint en el Explorador de servidores How to: Extend a SharePoint node in Server Explorer
Tutorial: Extender el Explorador de servidores para mostrar elementos webWalkthrough: Extend Server Explorer to display web parts