Como: Adicionar um nó do SharePoint personalizado para o Server Explorer

Você pode adicionar nós personalizada sob o sharepoint ConnectionsServer Explorer. Isso é útil quando você deseja exibir os componentes adicionais do SharePoint que não são exibidos em 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 implementação da IExplorerNodeTypeProvider.InitializeType método, use os membros a typeDefinition parâmetro para configurar o comportamento do novo nó. Este parâmetro é um IExplorerNodeTypeDefinition objeto fornece acesso a eventos definidos no 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 a definição do nó, criar uma classe que implementa o IExplorerNodeTypeExtension interface.

  2. Adicione o atributo System.ComponentModel.Composition.ExportAttribute à classe. Este atributo permite Visual Studio descobrir e carregar o IExplorerNodeTypeExtension de implementação. Passar o IExplorerNodeTypeExtension o 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 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: Use esses valores para especificar nós de conexão do site (nós que exibem os URLs do site), site, nós ou todos os outros nós pai no 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, um campo ou um tipo de conteúdo.

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

  5. No NodeChildrenRequested o manipulador de eventos, adicionar 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ó de site do 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ó simple e adicioná-lo como um filho do nó de site do 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 pacote de extensão (VSIX) para o assembly e outros arquivos que você deseja distribuir com extensão. Para obter mais informações, consulte Implantar extensões para as ferramentas do SharePoint em Visual Studio.

Consulte também

Tarefas

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

Outros recursos

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

Como: Estender um nó do SharePoint no Server Explorer