Compartilhar via


Como: adicionar um nó do SharePoint personalizado ao Server Explorer

Você pode adicionar nós personalizada sob o SharePoint Connections nó na Server Explorer.Isso é útil quando você deseja exibir os componentes adicionais do SharePoint que não são exibidas no Server Explorer por padrão.Para obter mais informações, consulte Estendendo o nó de conexões do SharePoint no Server Explorer.

Para adicionar um nó personalizado, primeiro crie uma classe que define o novo nó.Em seguida, crie uma extensão que adiciona o nó como um filho de um nó existente.

Para definir o novo nó.

  1. Crie um projeto de biblioteca de classe.

  2. Adicione referências para os seguintes conjuntos de módulos (assemblies) :

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

    • System.Drawing

  3. Crie uma nova classe que implemente a interface IExplorerNodeTypeProvider.

  4. Adicione os seguintes atributos à classe:

  5. Na sua implementação da IExplorerNodeTypeProvider.InitializeType método, o uso de membros da typeDefinition parâmetro para configurar o comportamento do novo nó.Este parâmetro é um IExplorerNodeTypeDefinition que fornece acesso para os eventos definidos no objeto do IExplorerNodeEvents interface.

    O exemplo de código a seguir demonstra como definir um novo nó.Este exemplo assume que o seu projeto contém um ícone chamado CustomChildNodeIcon como um recurso incorporado.

    <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 adicionar o novo nó como um filho de um nó existente

  1. No mesmo projeto como sua definição de nó, criar uma classe que implementa o IExplorerNodeTypeExtension interface.

  2. Adicione o atributo System.ComponentModel.Composition.ExportAttribute à classe.Este atributo permite que Visual Studio descobrir e carregar seu IExplorerNodeTypeExtension implementação.Passar o IExplorerNodeTypeExtension tipo para o construtor de atributo.

  3. Adicione o atributo ExplorerNodeTypeAttribute à classe.Em uma extensão de nó, este atributo especifica o identificador de seqüência de caracteres para o tipo de nó que você deseja estender.

    Para especificar os tipos de nó internos fornecidos pelo Visual Studio, passe um dos seguintes valores de enumeração para o construtor de atributo:

    • ExplorerNodeTypes: Usar esses valores para especificar nós de conexão do site (os nós que exibem os URLs do site), de nós ou todos os outros nós pai no site Server Explorer.

    • ExtensionNodeTypes: Use esses valores para especificar um de nós internos que representam um componente individual em um site do SharePoint, como, por exemplo, um nó que representa uma lista, campo ou tipo de conteúdo.

  4. Na sua implementação do Initialize método, o identificador a NodeChildrenRequested evento da IExplorerNodeType parâmetro.

  5. No NodeChildrenRequested manipulador de eventos, adicione o novo nó à coleção de nós filho da Node objeto que é exposto pelo parâmetro de argumentos de evento.

    O exemplo de código a seguir demonstra como adicionar o novo nó como um filho do nó site SharePoint no 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);
        }
    }
    

Exemplo Completo

O exemplo de código a seguir fornece o código completo para definir um nó simples e adicioná-lo como um filho do nó site SharePoint no 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);
        }
    }
}

Compilando o código

Este exemplo assume que o seu projeto contém um ícone chamado CustomChildNodeIcon como um recurso incorporado.Este exemplo também requer referências aos assemblies seguintes:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

  • System.Drawing

Implantação da extensão

Para implantar o Server Explorer extensão, criar um Visual Studio (VSIX) da extensão do pacote para o assembly e outros arquivos que você deseja distribuir com a extensão.Para obter mais informações, consulte Implantação de extensões para as ferramentas de SharePoint no Visual Studio.

Consulte também

Tarefas

Passo a passo: Estendendo o Server Explorer para exibir Web Parts

Conceitos

Como: estender um nó do SharePoint no Server Explorer

Outros recursos

Estendendo o nó de conexões do SharePoint no Server Explorer