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

Em Visual Studio 2010, você pode usar o sharepoint Connections o nó de Server Explorer para exibir os componentes em sites do SharePoint. No entanto, existem alguns componentes que Server Explorer não exibe por padrão. Esta explicação passo a passo, você estenderá Server Explorer para que ele exiba a Galeria de Web Parts em cada conectado o site do SharePoint.

Essa explicação passo a passo demonstra as seguintes tarefas:

  • Estende a criação de uma extensão de Visual Studio Server Explorer das seguintes maneiras:

    • Adiciona um novo Galeria de Web Parts nó em cada nó de site do SharePoint no Server Explorer. Esse novo nó contém nós filhos que representam cada Web Part na Galeria de Web Parts no site.

    • Ele define um novo tipo de nó que representa uma instância da Web Part. Esse novo tipo de nó é a base para os nós filho sob a nova Galeria de Web Parts nó. O novo tipo de nó de Web Part exibe informações de Propriedades janela sobre a Web Part que ele representa. O tipo de nó também inclui um item de menu de atalho personalizado que você pode usar como ponto de partida para a realização de outras tarefas relacionadas à Web Part.

  • Criação personalizada de dois comandos do SharePoint que são chamados pelo conjunto de módulos de extensão. Comandos do SharePoint são métodos que podem ser chamados por assemblies de extensão para usar APIs no modelo de objeto de servidor do SharePoint. Esta explicação passo a passo, você pode criar comandos que recuperam informações de Web Part do SharePoint site local no computador de desenvolvimento. Para obter mais informações, consulte A chamada para os modelos de objeto do SharePoint.

  • Construindo um pacote de extensão de Visual Studio (VSIX) para implantar a extensão.

  • A extensão de teste e depuração.

ObservaçãoObservação

Para obter uma versão alternativa este passo a passo usa o modelo de objeto do cliente do SharePoint em vez do modelo de objeto do servidor, consulte Demonstra Passo a passo: A chamada para o modelo de objeto do cliente do SharePoint em uma extensão do Server Explorer.

Pré-requisitos

É necessário que os seguintes componentes no computador de desenvolvimento para concluir este passo a passo:

Conhecimento dos seguintes conceitos é útil, mas não necessário para concluir o passo a passo:

A criação de projetos

Para concluir este passo a passo, você precisa criar três projetos:

  • Um projeto VSIX para criar o pacote VSIX para implantar a extensão.

  • Um projeto de biblioteca de classe que implementa a extensão. Este projeto deve usar o .NET Framework 4.

  • Um projeto de biblioteca de classe que define os comandos do SharePoint personalizados. Este projeto deve usar o.NET Framework 3.5.

Inicie o passo a passo através da criação de projetos.

Para criar o projeto VSIX

  1. Inicie o Visual Studio

  2. No menu File, aponte para New, e em seguida, clique em Project.

  3. No Novo projeto caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e selecione o extensibilidade nó.

    ObservaçãoObservação

    O extensibilidade nó só estará disponível se você instalar o SDK de 2010 Visual Studio. Para obter mais informações, consulte a seção de pré-requisitos acima.

  4. Na caixa de combinação na parte superior da caixa de diálogo, selecione .NET Framework 4.

  5. Selecione o O projeto de VSIX modelo.

  6. No nome , digite WebPartNode.

  7. Clique em OK.

    Visual StudioAdiciona o WebPartNode de projeto para Solution Explorer.

Para criar o projeto de extensão

  1. Em Solution Explorer, o botão direito do mouse no nó da solução, clique em Adde em seguida, clique em Novo projeto.

    ObservaçãoObservação

    Em projetos de Visual Basic, o nó de solução aparece na Solution Explorer somente quando o Always show solution caixa de seleção estiver marcada na Geral, projetos e soluções, caixa de diálogo Options.

  2. No Novo projeto caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e clique Windows.

  3. Na caixa de combinação na parte superior da caixa de diálogo, selecione .NET Framework 4.

  4. Selecione o Biblioteca de classe o modelo de projeto.

  5. No nome , digite WebPartNodeExtension.

  6. Clique em OK.

    Visual StudioAdiciona o WebPartNodeExtension o projeto à solução e abre o arquivo de código padrão Class1.

  7. Exclua o arquivo de código Class1 do projeto.

Para criar o projeto de comandos do SharePoint

  1. Em Solution Explorer, o botão direito do mouse no nó da solução, clique em Adde em seguida, clique em Novo projeto.

    ObservaçãoObservação

    Em projetos de Visual Basic, o nó de solução aparece na Solution Explorer somente quando o Always show solution caixa de seleção estiver marcada na Geral, projetos e soluções, caixa de diálogo Options.

  2. No Novo projeto caixa de diálogo caixa, expanda o Visual C# ou Visual Basic nós e clique Windows.

  3. Na caixa de combinação na parte superior da caixa de diálogo, selecione .NET Framework 3.5.

  4. Selecione o Biblioteca de classe o modelo de projeto.

  5. No nome , digite WebPartCommands.

  6. Clique em OK.

    Visual StudioAdiciona o WebPartCommands o projeto à solução e abre o arquivo de código padrão Class1.

  7. Exclua o arquivo de código Class1 do projeto.

Configurando os projetos

Antes de escrever código para criar a extensão, você precisa adicionar os arquivos de código e referências de assembly e definir as configurações do projeto.

Para configurar o projeto de WebPartNodeExtension

  1. No projeto WebPartNodeExtension, adicione quatro arquivos de código com os seguintes nomes:

    • SiteNodeExtension

    • WebPartNodeTypeProvider

    • WebPartNodeInfo

    • WebPartCommandIds

  2. No menu Project, escolha Add Reference.

  3. Sobre o .NET guia, pressione CTRL e selecione os seguintes assemblies e clique OK:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

    • System.Windows.Forms

  4. Em Solution Explorer, com o botão direito do WebPartNodeExtension nó do projeto e selecione Propriedades.

    O Project Designer abre.

  5. Clique o aplicativo guia.

  6. No espaço para nome padrão caixa (C#) ou namespace raiz caixa (Visual Basic), tipo de ServerExplorer.SharePointConnections.WebPartNode.

Para configurar o projeto de WebPartCommands

  1. No projeto WebPartCommands, adicione um arquivo de código chamado WebPartCommands.

  2. Em Solution Explorer, selecione o WebPartCommands no nó do projeto.

  3. No menu Project, selecione Add Existing Item.

  4. No Add Existing Item caixa de diálogo, navegue até a pasta que contém os arquivos de código para o projeto WebPartNodeExtension.

  5. Selecione os arquivos de código WebPartNodeInfo e WebPartCommandIds.

  6. Clique no menu drop-down para o Add botão e selecione Add As Link.

    Visual StudioAdiciona os arquivos de código para o projeto de WebPartCommands como links. Isso significa que os arquivos de código estão localizados no projeto WebPartNodeExtension, mas o código em arquivos também são compilados no projeto WebPartCommands.

  7. No menu Project, escolha Add Reference.

  8. Sobre o .NET guia, pressione CTRL e selecione os seguintes assemblies e clique OK:

    • Microsoft. SharePoint

    • Microsoft.VisualStudio.SharePoint.Commands

  9. Em Solution Explorer, com o botão direito do WebPartCommands nó do projeto e selecione Propriedades.

    O Project Designer abre.

  10. Clique o aplicativo guia.

  11. No espaço para nome padrão caixa (C#) ou namespace raiz caixa (Visual Basic), tipo de ServerExplorer.SharePointConnections.WebPartNode.

Criando ícones para os novos nós

Crie dois ícones para o Server Explorer extensão: um ícone para o novo Galeria de Web Parts nó e o outro ícone para cada nó de Web Part do filho sob a Galeria de Web Parts nó. Posteriormente nesta explicação passo a passo, você irá escrever código que associa esses ícones de nós.

Para criar ícones para os nós

  1. Em Solution Explorer, com o botão direito do WebPartNodeExtension nó do projeto e selecione Propriedades.

  2. Sobre o projeto menu, selecione Propriedades de WebPartNodeExtension.

    O Project Designer abre.

  3. Clique o recursos guia.

  4. Clique em Este projeto não contém um arquivo de recursos padrão. Clique aqui para criar um.

    Visual Studiocria um arquivo de recursos e o abre no designer.

  5. Na parte superior do designer, clique na seta suspensa no Add e, em seguida, clique Adicionar um novo ícone.

  6. Tipo de WebPartsNode para o novo nome do ícone e clique em Add.

    O novo ícone abre no O Editor de imagem.

  7. Edite a versão de 16x16 do ícone, para que ele tenha um design que você possa reconhecer facilmente.

  8. Selecione a versão de 32 x 32 do ícone.

  9. Sobre o imagem menu, selecione Excluir tipo de imagem.

  10. Repita as etapas 5 a 9 para adicionar um segundo ícone aos recursos do projeto. Este ícone de nome WebPart.

  11. Em Solução explorarr, na recursos pasta para o WebPartNodeExtension o projeto, selecione WebPartsNode.ico.

  12. No Propriedades janela, clique na lista suspensa ao lado de Build Action e selecione Embedded Resource.

  13. Repita as duas últimas etapas para WebPart.ico.

Adicionar o nó de galeria de Web Parts ao Server Explorer

Criar uma classe que adiciona o novo Galeria de Web Parts o nó para cada nó de site do SharePoint. Para adicionar o novo nó implementa a classe de IExplorerNodeTypeExtension interface. Implementar essa interface, sempre que você deseja estender o comportamento de um nó existente em Server Explorer, como, por exemplo, adicionando um novo nó filho em um nó.

Para adicionar o nó da Galeria de Web Parts para o Server Explorer

  1. No projeto WebPartNodeExtension, clique duas vezes no arquivo de código SiteNodeExtension.

  2. Cole o código a seguir esse arquivo.

    ObservaçãoObservação

    Após adicionar esse código, o projeto terá alguns erros de compilação. Esses erros desaparecem quando você adiciona o código em etapas posteriores.

    Imports System.Collections.Generic
    Imports System.ComponentModel.Composition
    Imports Microsoft.VisualStudio.SharePoint.Explorer
    
    Namespace ServerExplorer.SharePointConnections.WebPartNode
    
        ' Export attribute: Enables Visual Studio to discover and load this extension.
        ' ExplorerNodeType attribute:  Indicates that this class extends SharePoint site nodes in Server Explorer.
        ' WebPartNodeTypeProvider class: Represents an extension of SharePoint site nodes in Server Explorer.
        <Export(GetType(IExplorerNodeTypeExtension))> _
        <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
        Friend Class SiteNodeExtension
            Implements IExplorerNodeTypeExtension
    
            Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
                Implements IExplorerNodeTypeExtension.Initialize
    
                ' The NodeChildrenRequested event is raised when the user expands the
                ' SharePoint site node in Server Explorer.
                AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested
            End Sub
    
            ' Creates the new Web Part Gallery node with the specified icon.
            Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs)
    
                ' The CreateWebPartNodes argument is a delegate that Visual Studio calls 
                ' to create the child nodes under the Web Part Gallery node.
                e.Node.ChildNodes.AddFolder("Web Part Gallery", My.Resources.WebPartsNode.ToBitmap(), _
                    AddressOf CreateWebPartNodes)
            End Sub
    
            ' Creates all of the individual Web Part nodes under the new Web Part Gallery node.
            Private Sub CreateWebPartNodes(ByVal parentNode As IExplorerNode)
    
                ' Call the custom SharePoint command to get items from the Web Part gallery.
                Dim webParts = parentNode.Context.SharePointConnection.ExecuteCommand(Of WebPartNodeInfo())( _
                    WebPartCommandIds.GetWebParts)
                If webParts IsNot Nothing Then
                    For Each webPart As WebPartNodeInfo In webParts
    
                        ' Create a new annotation object to store the current Web Part item with the new node.
                        Dim annotations = New Dictionary(Of Object, Object)()
                        annotations.Add(GetType(WebPartNodeInfo), webPart)
    
                        ' Create the new node for the current Web Part item.
                        parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId, _
                            webPart.Name, annotations)
                    Next
                End If
            End Sub
    
        End Class
    End Namespace
    
    using System.Collections.Generic;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.SharePoint.Explorer;
    
    namespace ServerExplorer.SharePointConnections.WebPartNode
    {
        // Enables Visual Studio to discover and load this extension.
        [Export(typeof(IExplorerNodeTypeExtension))]        
    
        // Indicates that this class extends SharePoint site nodes in Server Explorer.
        [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    
        // Represents an extension of SharePoint site nodes in Server Explorer.
        internal class SiteNodeExtension : IExplorerNodeTypeExtension
        {
            public void Initialize(IExplorerNodeType nodeType)
            {
                // The NodeChildrenRequested event is raised when the user expands the
                // SharePoint site node in Server Explorer.
                nodeType.NodeChildrenRequested += NodeChildrenRequested;
            }
    
            // Creates the new Web Part Gallery node with the specified icon.
            private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e)
            {
                // The CreateWebPartNodes argument is a delegate that Visual Studio calls 
                // to create the child nodes under the Web Part Gallery node.
                e.Node.ChildNodes.AddFolder("Web Part Gallery",
                    Properties.Resources.WebPartsNode.ToBitmap(), CreateWebPartNodes);
            }
    
            // Creates all of the individual Web Part nodes under the new Web Part Gallery node.
            private void CreateWebPartNodes(IExplorerNode parentNode)
            {
                // Call the custom SharePoint command to get items from the Web Part gallery.
                var webParts = parentNode.Context.SharePointConnection.ExecuteCommand<WebPartNodeInfo[]>(
                    WebPartCommandIds.GetWebParts);
    
                if (webParts != null)
                {
                    foreach (WebPartNodeInfo webPart in webParts)
                    {
                        // Create a new annotation object to store the current Web Part item with the new node.
                        var annotations = new Dictionary<object, object>() 
                        { 
                            { typeof(WebPartNodeInfo), webPart } 
                        };
    
                        // Create the new node for the current Web Part item.
                        parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId,
                            webPart.Name, annotations);
                    }
                }
            }
        }
    }
    

Definindo um tipo de nó que representa uma Web Part

Crie uma classe que define um novo tipo de nó que representa uma Web Part. Esse novo tipo de nó é usado por Visual Studio para exibir nós filho sob a Galeria de Web Parts nó. Cada um de nós filho representa uma única Web Part no site do SharePoint.

Para definir o novo tipo de nó, implementa a classe de IExplorerNodeTypeProvider interface. Implementar essa interface, sempre que você deseja definir um novo tipo de nó no Server Explorer.

Para definir o tipo de nó de Web Part

  1. No projeto WebPartNodeExtension, clique duas vezes no arquivo de código WebPartNodeTypeProvder.

  2. Cole o código a seguir esse arquivo.

    Imports System
    Imports System.Collections.Generic
    Imports System.Windows.Forms
    Imports System.ComponentModel.Composition
    Imports Microsoft.VisualStudio.SharePoint
    Imports Microsoft.VisualStudio.SharePoint.Explorer
    
    Namespace ServerExplorer.SharePointConnections.WebPartNode
    
        ' Export attribute: Enables Visual Studio to discover and load this extension.
        ' ExplorerNodeType attribute: Specifies the ID for this new node type.
        ' WebPartNodeTypeProvider class: Defines a new node type that represents a Web Part on a SharePoint site.
        <Export(GetType(IExplorerNodeTypeProvider))> _
        <ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)> _
        Friend Class WebPartNodeTypeProvider
            Implements IExplorerNodeTypeProvider
    
            Friend Const WebPartNodeTypeId As String = "Contoso.WebPart"
    
            Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _
                Implements IExplorerNodeTypeProvider.InitializeType
    
                typeDefinition.DefaultIcon = My.Resources.WebPart.ToBitmap()
                typeDefinition.IsAlwaysLeaf = True
                AddHandler typeDefinition.NodePropertiesRequested, AddressOf NodePropertiesRequested
            End Sub
    
            ' Retrieves properties that are displayed in the Properties window when
            ' a Web Part node is selected.
            Private Sub NodePropertiesRequested(ByVal Sernder As Object, _
                ByVal e As ExplorerNodePropertiesRequestedEventArgs)
    
                Dim nodeInfo = e.Node.Annotations.GetValue(Of WebPartNodeInfo)()
    
                ' Call the custom SharePoint command to get the Web Part properties.
                Dim properties As Dictionary(Of String, String) = _
                    e.Node.Context.SharePointConnection.ExecuteCommand( _
                    Of WebPartNodeInfo, Dictionary(Of String, String))(
                    WebPartCommandIds.GetWebPartProperties, nodeInfo)
                Dim propertySource As Object = e.Node.Context.CreatePropertySourceObject(properties)
                e.PropertySources.Add(propertySource)
            End Sub
    
        End Class
    End Namespace
    
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.SharePoint;
    using Microsoft.VisualStudio.SharePoint.Explorer;
    
    namespace ServerExplorer.SharePointConnections.WebPartNode
    {
        // Enables Visual Studio to discover and load this extension.
        [Export(typeof(IExplorerNodeTypeProvider))]
    
        // Specifies the ID for this new node type.
        [ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)]
    
        // Defines a new node type that represents a Web Part on a SharePoint site.
        internal class WebPartNodeTypeProvider : IExplorerNodeTypeProvider
        {
            internal const string WebPartNodeTypeId = "Contoso.WebPart";
    
            public void InitializeType(IExplorerNodeTypeDefinition typeDefinition)
            {
                typeDefinition.DefaultIcon = Properties.Resources.WebPart.ToBitmap();
                typeDefinition.IsAlwaysLeaf = true;
                typeDefinition.NodePropertiesRequested += NodePropertiesRequested;
            }
    
            // Retrieves properties that are displayed in the Properties window when
            // a Web Part node is selected.
            private void NodePropertiesRequested(object sender,
                ExplorerNodePropertiesRequestedEventArgs e)
            {
                var webPartNodeInfo = e.Node.Annotations.GetValue<WebPartNodeInfo>();
    
                // Call the custom SharePoint command to get the Web Part properties.
                Dictionary<string, string> properties =
                    e.Node.Context.SharePointConnection.ExecuteCommand<
                    WebPartNodeInfo, Dictionary<string, string>>(
                    WebPartCommandIds.GetWebPartProperties, webPartNodeInfo);
    
                object propertySource = e.Node.Context.CreatePropertySourceObject(properties);
                e.PropertySources.Add(propertySource);
            }
        }
    }
    

Definição da classe de dados da Web Part

Defina uma classe que contém dados sobre uma única Web Part no site do SharePoint. Posteriormente nesta explicação, você criará um comando personalizado do SharePoint que recupera dados de cada Web Part no site e, em seguida, atribui os dados para instâncias dessa classe.

Para definir a classe de dados de Web Part

  1. No projeto WebPartNodeExtension, clique duas vezes no arquivo de código WebPartNodeInfo.

  2. Cole o código a seguir esse arquivo.

    Imports System
    
    Namespace ServerExplorer.SharePointConnections.WebPartNode
    
        ' Contains basic data about a single Web Part on the SharePoint site. This class is 
        ' serializable so that instances of it can be sent between the WebPartNode and 
        ' WebPartCommands assemblies.
        <Serializable()> _
        Public Class WebPartNodeInfo
    
            Private siteIdValue As Guid
            Public Property SiteId As Guid
                Get
                    Return siteIdValue
                End Get
                Set(ByVal value As Guid)
                    siteIdValue = value
                End Set
            End Property
    
            Private idValue As Integer
            Public Property Id As Integer
                Get
                    Return idValue
                End Get
                Set(ByVal value As Integer)
                    idValue = value
                End Set
            End Property
    
            Private uniqueIdValue As Guid
            Public Property UniqueId As Guid
                Get
                    Return uniqueIdValue
                End Get
                Set(ByVal value As Guid)
                    uniqueIdValue = value
                End Set
            End Property
    
            Private nameValue As String
            Public Property Name As String
                Get
                    Return nameValue
                End Get
                Set(ByVal value As String)
                    nameValue = value
                End Set
            End Property
    
            Private imageUrlValue As String
            Public Property ImageUrl As String
                Get
                    Return imageUrlValue
                End Get
                Set(ByVal value As String)
                    imageUrlValue = value
                End Set
            End Property
    
        End Class
    End Namespace
    
    using System;
    
    namespace ServerExplorer.SharePointConnections.WebPartNode
    {
        // Contains basic data about a single Web Part on the SharePoint site. This class is 
        // serializable so that instances of it can be sent between the WebPartNode and 
        // WebPartCommands assemblies.
        [Serializable]
        public class WebPartNodeInfo
        {
            public Guid SiteId { get; set; }
            public int Id { get; set; }
            public Guid UniqueId { get; set; }
            public string Name { get; set; }
            public string ImageUrl { get; set; }
        }
    }
    

Definindo as identificações para o comando do SharePoint

Defina várias cadeias de caracteres que identificam os comandos do SharePoint personalizados. Você implementará esses comandos posteriormente neste passo a passo.

Para definir as IDs de comando

  1. No projeto WebPartNodeExtension, clique duas vezes no arquivo de código WebPartCommandIds.

  2. Cole o código a seguir esse arquivo.

    Namespace ServerExplorer.SharePointConnections.WebPartNode
    
        Public Class WebPartCommandIds
            Public Const GetWebParts As String = "WebPart.GetWebParts"
            Public Const GetWebPartProperties As String = "WebPart.GetProperties"
        End Class
    
    End Namespace
    
    namespace ServerExplorer.SharePointConnections.WebPartNode
    {
        public static class WebPartCommandIds
        {
            public const string GetWebParts = "WebPart.GetWebParts";
            public const string GetWebPartProperties = "WebPart.GetProperties";
        }
    }
    

Criando os comandos do SharePoint personalizado

Crie comandos personalizados que chamam o modelo de objeto de servidor do SharePoint para recuperar dados sobre o Web Parts no site do SharePoint. Cada comando é um método que possui o SharePointCommandAttribute aplicada ao proprietário.

Para definir os comandos do SharePoint

  1. No projeto WebPartCommands, clique duas vezes no arquivo de código WebPartCommands.

  2. Cole o código a seguir esse arquivo.

    Imports System.Collections.Generic
    Imports Microsoft.SharePoint
    Imports Microsoft.VisualStudio.SharePoint.Commands
    
    Namespace ServerExplorer.SharePointConnections.WebPartNode
    
        Friend Class WebPartsCommands
    
            ' Gets data for each Web Part on the SharePoint site, and returns an array of 
            ' serializable objects that contain the data.
            <SharePointCommand(WebPartCommandIds.GetWebParts)> _
            Private Shared Function GetWebParts(ByVal context As ISharePointCommandContext) As WebPartNodeInfo()
    
                Dim nodeInfos = New List(Of WebPartNodeInfo)()
                Dim webParts As SPListItemCollection = context.Site.GetCatalog( _
                    SPListTemplateType.WebPartCatalog).Items
    
                For Each webPart As SPListItem In webParts
                    Dim nodeInfo As WebPartNodeInfo = New WebPartNodeInfo()
                    With nodeInfo
                        .Id = webPart.ID
                        .SiteId = webPart.ParentList.ParentWeb.ID
                        .Name = webPart.Title
                        .UniqueId = webPart.UniqueId
                        .ImageUrl = webPart.ParentList.ImageUrl
                    End With
                    nodeInfos.Add(nodeInfo)
                Next
                Return nodeInfos.ToArray()
            End Function
    
            ' Gets additional property data for a specific Web Part.
            <SharePointCommand(WebPartCommandIds.GetWebPartProperties)> _
            Private Shared Function GetWebPartProperties(ByVal context As ISharePointCommandContext, _
                ByVal webPartNodeInfo As WebPartNodeInfo) As Dictionary(Of String, String)
    
                Dim webParts As SPList = context.Site.GetCatalog(SPListTemplateType.WebPartCatalog)
                Dim webPart As SPListItem = webParts.Items(webPartNodeInfo.UniqueId)
                Return SharePointCommandServices.GetProperties(webPart)
            End Function
        End Class
    End Namespace
    
    using System.Collections.Generic;
    using Microsoft.SharePoint;
    using Microsoft.VisualStudio.SharePoint.Commands;
    
    namespace ServerExplorer.SharePointConnections.WebPartNode
    {
        internal class WebPartsCommands
        {
            // Gets data for each Web Part on the SharePoint site, and returns an array of 
            // serializable objects that contain the data.
            [SharePointCommand(WebPartCommandIds.GetWebParts)]
            private static WebPartNodeInfo[] GetWebParts(ISharePointCommandContext context)
            {
                var nodeInfos = new List<WebPartNodeInfo>();
                SPListItemCollection webParts = context.Site.GetCatalog(
                    SPListTemplateType.WebPartCatalog).Items;
    
                foreach (SPListItem webPart in webParts)
                {
                    WebPartNodeInfo nodeInfo = new WebPartNodeInfo
                    {
                        Id = webPart.ID,
                        SiteId = webPart.ParentList.ParentWeb.ID,
                        Name = webPart.Title,
                        UniqueId = webPart.UniqueId,
                        ImageUrl = webPart.ParentList.ImageUrl
                    };
                    nodeInfos.Add(nodeInfo);
                }
    
                return nodeInfos.ToArray();
            }
    
            // Gets additional property data for a specific Web Part.
            [SharePointCommand(WebPartCommandIds.GetWebPartProperties)]
            private static Dictionary<string, string> GetWebPartProperties(ISharePointCommandContext context, 
                WebPartNodeInfo nodeInfo)
            {
                SPList webParts = context.Site.GetCatalog(SPListTemplateType.WebPartCatalog);
                SPListItem webPart = webParts.Items[nodeInfo.UniqueId];
    
                return SharePointCommandServices.GetProperties(webPart);
            }
        }
    }
    

Ponto de Verificação

Neste ponto, passo a passo, todo o código para o Galeria de Web Parts nó e os comandos do SharePoint estão agora nos projetos. Crie a solução para certificar-se de que os dois projetos compile sem erros.

Para criar a solução

  • Sobre o Build menu, selecione Build Solution.

Criando um pacote VSIX para implantar a extensão.

Para implantar a extensão, use o projeto VSIX em sua solução para criar um pacote VSIX. Primeiro, configure o pacote VSIX modificando o arquivo source.extension.vsixmanifest que está incluído no projeto VSIX. Em seguida, crie o pacote VSIX pela criação da solução.

Para configurar o pacote VSIX

  1. Em Solution Explorer, WebPartNode no projeto, clique duas vezes o source.extension.vsixmanifest arquivo.

    Visual StudioAbre o arquivo no editor de manifesto. O arquivo source.extension.vsixmanifest é a base para o arquivo de extension.vsixmanifest é necessária para todos os pacotes VSIX. Para obter mais informações sobre este arquivo, consulte VSX Schema for Extensions.

  2. No Nome do produto , digite Nó de galeria de Web Part para o Server Explorer.

  3. No Autor , digite Contoso.

  4. No Descrição , digite adiciona um nó da Galeria de Web Parts personalizada para o nó do SharePoint Connections no Server Explorer. Essa extensão usa um comando do SharePoint personalizado para chamar o modelo de objeto do servidor.

  5. No conteúdo seção do editor, clique na Adicionar conteúdo botão.

  6. No Adicionar conteúdo na caixa de Selecione um tipo de conteúdo caixa de listagem, selecione MEF componente.

    ObservaçãoObservação

    Este valor corresponde do MefComponent elemento no arquivo extension.vsixmanifest. Este elemento Especifica o nome de um assembly de extensão no pacote VSIX. Para obter mais informações, consulte MEFComponent Element (VSX Schema).

  7. Em Selecionar uma fonte de, clique o projeto botão de opção e, em seguida, selecione WebPartNodeExtension em que a caixa de listagem.

  8. Clique em OK.

  9. No editor de manifesto, clique na Adicionar conteúdo novamente.

  10. No Adicionar conteúdo na caixa de Selecione um tipo de conteúdo caixa de listagem, selecione Tipo de extensão personalizada.

    ObservaçãoObservação

    Este valor corresponde do CustomExtension elemento no arquivo extension.vsixmanifest. Este elemento Especifica uma extensão personalizada que você deseja incluir na extensão de Visual Studio. Para obter mais informações, consulte CustomExtension Element (VSX Schema).

  11. No tipo de caixa de texto, digite SharePoint.Commands.v4.

    ObservaçãoObservação

    Este valor corresponde do Type atributo da CustomExtension elemento no arquivo extension.vsixmanifest. O valor Sharepoint.Commands.v4 é necessária para todos os assemblies de extensão personalizada que contêm comandos personalizados do SharePoint.

  12. Em Selecionar uma fonte de, clique o projeto botão de opção e, em seguida, selecione WebPartCommands em que a caixa de listagem.

  13. Clique em OK.

  14. Sobre o Build menu, clique em Build Solution. Certifique-se de que a solução é compilado sem erros.

  15. Abra a pasta de saída de compilação do projeto WebPartNode. Certifique-se de que esta pasta agora contém o arquivo WebPartNode.vsix.

    Por padrão, a pasta de saída de compilação é a.. pasta \bin\debug na pasta que contém o arquivo de projeto.

A extensão de teste.

Agora você está pronto para testar a nova Galeria de Web PartsServer Explorer. Primeiro, inicie a depuração a extensão de uma instância experimental do Visual Studio. Em seguida, usar o novo Web Parts o nó na instância experimental do Visual Studio.

Para iniciar a extensão de depuração.

  1. Reiniciar Visual Studio com privilégios de administrador e abra a solução de WebPartNode.

  2. No projeto WebPartNodeExtension, abra o arquivo de código de SiteNodeExtension e adicionar um ponto de interrupção para a primeira linha do código de NodeChildrenRequested e CreateWebPartNodes métodos.

  3. Pressione F5 para iniciar a depuração.

    Visual Studio instala a extensão a extensão de nó de galeria de parte de %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Web para Explorer\1.0 do servidor e inicia uma instância experimental do Visual Studio. Você testará o item de projeto nesta instância do Visual Studio.

Para testar a extensão.

  1. Na instância experimental do Visual Studiodiante do Exibir menu, clique em Server Explorer.

  2. Verifique se o site do SharePoint que você deseja usar para teste aparece sob o sharepoint ConnectionsServer Explorer. Se não estiver listado, execute estas etapas:

    1. Com o botão direito sharepoint Connections e, em seguida, clique em Add Connection.

    2. No Adicionar conexão com o SharePoint caixa de diálogo, digite a URL do site do SharePoint que você deseja se conectar. Para especificar o site do SharePoint no seu computador de desenvolvimento, digite https://localhost.

    3. Clique em OK.

  3. Expanda o nó de conexão do site (o nó exibe o URL do seu site) e um nó de site filho (por exemplo, O Site de equipe).

  4. Verifique o código na instância do Visual Studio pára no ponto de interrupção que você definiu anteriormente na NodeChildrenRequested método. Pressione F5 para continuar a depurar o projeto.

  5. Na instância experimental do Visual Studio, verifique se que um novo nó denominado Galeria de Web Parts aparece sob o nó do site de nível superior. Expanda o Galeria de Web Parts nó.

  6. Verificar que o código na instância de Visual Studio pára no ponto de interrupção que você definiu anteriormente na CreateWebPartNodes método. Pressione F5 para continuar a depurar o projeto.

  7. Na instância experimental do Visual Studio, verifique se todos os Web Parts no site conectado aparecem sob o Galeria de Web PartsServer Explorer.

  8. Clique com o botão direito da Web Parts e clique em Propriedades.

  9. No Visual Studio instância que você está depurando, verifique se os detalhes sobre a Web Part aparecem na Propriedades janela.

Desinstalando a extensão de Visual Studio

Após concluir o teste a extensão, desinstale a extensão do Visual Studio.

Para desinstalar a extensão.

  1. Na instância experimental do Visual Studiodiante do Ferramentas menu, clique em Extension Manager.

    O Extension Manager abre a caixa de diálogo.

  2. Na lista de extensões, selecione Extensão de nó de galeria de Web Part para o Server Explorere em seguida, clique em desinstalar.

  3. Na caixa de diálogo que aparece, clique em Sim para confirmar que você deseja desinstalar a extensão.

  4. Clique em Reiniciar agora para concluir a desinstalação.

  5. Feche as duas instâncias de Visual Studio (a instância experimental e a instância do Visual Studio que abriu a solução de WebPartNode).

Consulte também

Tarefas

Demonstra Passo a passo: A chamada para o modelo de objeto do cliente do SharePoint em uma extensão do Server Explorer

Criando um novo Bitmap ou outra imagem

Referência

Editor de imagens

Outros recursos

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