Passo a passo: Estendendo o Server Explorer para exibir Web Parts
Em o Visual Studio, você pode usar o nó de Conexões do SharePoint de Gerenciador de Servidores para exibir componentes em sites web do SharePoint.Em o entanto, Gerenciador de Servidores não exibe alguns componentes por padrão.Em essa explicação passo a passo, você estenderá Gerenciador de Servidores de modo que exibe a galeria de Web parts em cada site do SharePoint conectada.
Essa explicação passo a passo demonstra as seguintes tarefas:
Criando uma extensão do Visual Studio que estende Gerenciador de Servidores das seguintes maneiras:
A extensão adiciona um nó de Galeria de Web Parts em cada nó de site web do SharePoint em Gerenciador de Servidores.Esse novo nó contém os nós filhos representando cada Web parts em galeria de Web parts no site.
A extensão define um novo tipo de nó que representa uma instância de Web parts.Esse novo tipo de nó é a base para os nós filho no novo nó de Galeria de Web Parts .O novo tipo de nó de Web parts exibe informações na janela de Propriedades sobre Web parts que representa.O tipo de nó também inclui um item de menu de atalho personalizado que você pode usar como um ponto de partida para realizar outras tarefas relacionadas a Web parts.
Criando dois comandos personalizados do SharePoint que o assembly de extensão chama.Os comandos do SharePoint são métodos que podem ser chamados por assemblies de extensão para usar APIs no modelo de objeto do servidor para o SharePoint.Em essa explicação passo a passo, você cria os comandos que recuperam informações de Web parts de site web do SharePoint local no computador de desenvolvimento.Para obter mais informações, consulte A chamada para os modelos de objeto do SharePoint.
Criando um pacote de extensão (Visual Studio) VSIX para implantar a extensão.
Depuração e teste a extensão.
Observação |
---|
Para uma versão alternativo de essa explicação passo a passo que usa o modelo de objeto de cliente para o SharePoint em vez de seu modelo de objeto de servidor, consulte Passo a passo: Chamando o modelo de objeto do cliente do SharePoint em uma extensão do Server Explorer. |
Pré-requisitos
Você precisa dos seguintes componentes no computador de desenvolvimento de concluir este explicação passo a passo:
Edições suportadas do windows, do SharePoint e do Visual Studio.Para obter mais informações, consulte Requisitos para o desenvolvimento de soluções do SharePoint.
O Visual Studio SDK.Essa explicação passo a passo usa o modelo de projeto de VSIX no SDK para criar um conjunto de VSIX para implantar o item de projeto.Para obter mais informações, consulte Estender as ferramentas do SharePoint em Visual Studio.
Conhecer os seguintes conceitos é útil, mas não necessário, concluir a explicação passo a passo:
Usando o modelo de objeto do servidor para o SharePoint.Para obter mais informações, consulte Usando o modelo de objeto do Lado de base do SharePoint.
Web Parts em soluções do SharePoint.Para obter mais informações, consulte visão geral de Web Parts.
Criando projetos
Para concluir esta explicação passo-a-passo, você deve criar três projetos:
Um projeto de VSIX criar o conjunto de VSIX para implantar a extensão.
Um projeto de biblioteca de classe que implementa a extensão.Este projeto deve selecionar o .NET Framework 4,5.
Um projeto de biblioteca de classe que define o SharePoint personalizado de comandos.Este projeto deve selecionar a estrutura do .NET framework 3,5.
Inicie o passo-a-passo criando projetos.
Para criar o projeto VSIX
Inicie o Visual Studio
Em a barra de menu, escolha Arquivo, Novo, Projeto.
Em a caixa de diálogo de Novo Projeto , expanda os nós de Visual C# ou de Visual Basic , e então escolha o nó de Extensibilidade .
Observação O nó de Extensibilidade está disponível somente se você instalar o Visual Studio SDK.Para obter mais informações, consulte a seção de pré-requisito anteriormente em este tópico.
Em a parte superior da caixa de diálogo, escolha o .NET Framework 4,5 na lista de versões do .NET Framework.
Escolha o modelo de projeto de VSIX , nomeie o projeto WebPartNode, e então escolha o botão de OK .
Visual Studio adiciona o projeto de WebPartNode a Gerenciador de Soluções.
Para criar o projeto de extensão
Em Gerenciador de Soluções, abra o menu de atalho para o nó da solução, escolha Adicionar, e então escolha Novo Projeto.
Observação Em projetos Visual Basic, o nó da solução aparece em Gerenciador de Soluções somente quando a caixa de seleção de Sempre mostrar solução está selecionada em General, Projects and Solutions, Options Dialog Box.
Em a caixa de diálogo de Novo Projeto , expanda o nó de Visual C# ou o nó de Visual Basic , e no nó de Janelas escolha.
Em a parte superior da caixa de diálogo, escolha o .NET Framework 4,5 na lista de versões do .NET Framework.
Em a lista de modelos de projeto, escolha Biblioteca de Classes, nomeie o projeto WebPartNodeExtension, e então escolha o botão de OK .
Visual Studio adiciona o projeto de WebPartNodeExtension a solução e abre o arquivo de código Class1 de opção.
Exclua o arquivo de código Class1 do projeto.
Para criar o projeto dos comandos do SharePoint
Em Gerenciador de Soluções, abra o menu de atalho para o nó da solução, escolha Adicionar, e então escolha Novo Projeto.
Observação Em projetos Visual Basic, o nó da solução aparece em Gerenciador de Soluções somente quando a caixa de seleção de Sempre mostrar solução está selecionada em General, Projects and Solutions, Options Dialog Box.
Em a caixa de diálogo de Novo Projeto , expanda o nó de Visual C# ou o nó de Visual Basic , e então escolha o nó de Janelas .
Em a parte superior da caixa de diálogo, escolha o .NET Framework 3,5 na lista de versões do .NET Framework.
Em a lista de modelos de projeto, escolha Biblioteca de Classes, nomeie o projeto WebPartCommands, e então escolha o botão de OK .
Visual Studio adiciona o projeto de WebPartCommands a solução e abre o arquivo de código Class1 de opção.
Exclua o arquivo de código Class1 do projeto.
Configurando projetos
Antes que você escreva código para criar uma extensão, você deve adicionar arquivos de código e referências assembly, e configurar as configurações do projeto.
para configurar o projeto de WebPartNodeExtension
Em o projeto de WebPartNodeExtension, adicione quatro arquivos de código que possuem os seguintes nomes:
SiteNodeExtension
WebPartNodeTypeProvider
WebPartNodeInfo
WebPartCommandIds
Abra o menu de atalho para o projeto de WebPartNodeExtension , e então escolha Adicionar Referência.
Em a caixa de diálogo de Gerenciador de referência – WebPartNodeExtension , escolha a guia de estrutura , selecione a caixa de seleção para cada um dos seguintes conjuntos de módulos (assemblies):
System.ComponentModel.Composition
System.Windows.Forms
Escolha a guia de Extensões , selecione a caixa de seleção para o assembly de Microsoft.VisualStudio.SharePoint, e então escolha o botão de OK .
Em Gerenciador de Soluções, abra o menu de atalho para o nó de projeto de WebPartNodeExtension , e então escolha Propriedades.
O Project Designer abre.
Escolha a guia de Aplicativo .
Em a caixa de Namespace padrão (C#) ou na caixa de Namespace raiz (Visual Basic), entre em ServerExplorer.SharePointConnections.WebPartNode.
para configurar o projeto de WebPartCommands
Em o projeto de WebPartCommands, adicione um arquivo de código que é chamado WebPartCommands.
Em Gerenciador de Soluções, abra o menu de atalho para o nó de projeto de WebPartCommandsAdicionar, escolha, e escolha Item Existente.
Em a caixa de diálogo de Adicionar item existente , navegue até a pasta que contém os arquivos de código para o projeto de WebPartNodeExtension, e então escolha arquivos de código de WebPartNodeInfo e de WebPartCommandIds.
Escolha a seta ao botão de Adicionar , e então escolha no menu Adicionar como vínculo que aparece.
Visual Studio adiciona os arquivos de código para o projeto de WebPartCommands como links.Como resultado, os arquivos de código são localizados no projeto de WebPartNodeExtension, mas o código em arquivos também é criado no projeto de WebPartCommands.
Abra o menu de atalho para o projeto de WebPartCommands novamente, e escolha Adicionar Referência.
Em a caixa de diálogo de Gerenciador de referência – WebPartCommands , escolha a guia de Extensões , selecione a caixa de seleção para cada um dos seguintes conjuntos de módulos (assemblies), e depois escolha o botão de OK :
Microsoft.SharePoint
Microsoft.VisualStudio.SharePoint.Commands
Em Gerenciador de Soluções, abra o menu de atalho para o projeto de WebPartCommands novamente, e então escolha Propriedades.
O Project Designer abre.
Escolha a guia de Aplicativo .
Em a caixa de Namespace padrão (C#) ou na caixa de Namespace raiz (Visual Basic), entre em ServerExplorer.SharePointConnections.WebPartNode.
Criando ícones para novos nós
crie dois ícones para a extensão de Gerenciador de Servidores : um ícone para o novo nó de Galeria de Web Parts , e outro ícone para cada nó filho de Web parts sob o nó de Galeria de Web Parts .Posteriormente em esta explicação passo a passo, você irá escrever o código que associa esses ícones com os nós.
Para criar ícones para nós
Em Gerenciador de Soluções, abra o menu de atalho para o projeto de WebPartNodeExtension , e então escolha Propriedades.
O Project Designer abre.
Escolha o guia de recursos, e então escolha este projeto não contém um arquivo de recursos padrão. Clique aqui para criar um link.
Visual Studio cria um arquivo de recurso e abre no designer.
Em a parte superior do designer, escolha a seta próxima ao comando de menu de Adicionar Recurso , e então escolha no menu Adicionar Novo Ícone que aparece.
Em a caixa de diálogo de Adicionar Novo Recurso , nomeie o novo ícone WebPartsNode, e então escolha o botão de Adicionar .
o novo ícone abre em Editor de Imagem.
Edite a versão 16x16 de ícone de modo que tenha um design que você pode facilmente reconhecer.
Abra o menu de atalho para a versão 32x32 ícone, e então escolha Excluir Tipo de Imagem.
Repita as etapas 5 a 8 para adicionar um segundo ícone aos recursos do projeto, e nomeie este ícone WebPart.
Em Gerenciador de Soluções, na pasta de Recursos para o projeto de WebPartNodeExtension , abra o menu de atalho para WebPartsNode.ico.
Em a janela de Propriedades , escolha a seta ao lado de Ação de Compilação, e então escolha no menu Recurso Incorporado que aparece.
Repita as duas últimas etapas para WebPart.ico.
Adicionando o nó de galeria de Web parts ao server Explorer
Crie uma classe que adiciona o novo nó de Galeria de Web Parts a cada nó de site web do SharePoint.para adicionar o novo nó, a classe implementa a interface de IExplorerNodeTypeExtension .Implementar essa interface sempre que você deseja estender o comportamento de um nó existente em Gerenciador de Servidores, como adicionar um nó filho a um nó.
Para adicionar o nó de galeria de Web parts ao server Explorer
Em o projeto de WebPartNodeExtension, abra o arquivo de código de SiteNodeExtension, e então cole o seguinte código em ele.
Observação Após adicionar este código, compilar o projeto mandará alguns erros, mas partirão 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 a Web parts
Crie uma classe que define um novo tipo de nó que representa a Web parts.O Visual Studio usa esse novo tipo de nó para exibir nós filho no nó de Galeria de Web Parts .Cada nó filho representa único Web parts no site do SharePoint.
Para definir um novo tipo de nó, a classe implementa a interface de IExplorerNodeTypeProvider .Implementar essa interface sempre que você deseja definir um novo tipo de nó em Gerenciador de Servidores.
Para definir o tipo de nó de Web parts
Em o projeto de WebPartNodeExtension, abra o arquivo de código de WebPartNodeTypeProvder, e então cole o seguinte código em ele.
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); } } }
Definindo a classe de dados de Web parts
Defina uma classe que contém dados em um único Web parts no site do SharePoint.Posteriormente em esta explicação passo a passo, você criará um comando personalizado do SharePoint que recupera dados sobre cada parte Web no site e atribui os dados às instâncias da classe.
Para definir a classe de dados de Web parts
Em o projeto de WebPartNodeExtension, abra o arquivo de código de WebPartNodeInfo, e então cole o seguinte código em ele.
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
Definir várias cadeias de caracteres que identificam os comandos personalizados do SharePoint.Esses comandos você implementará posteriormente em este passo-a-passo.
Para definir as identificações de comando
Em o projeto de WebPartNodeExtension, abra o arquivo de código de WebPartCommandIds, e então cole o seguinte código em ele.
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 comandos personalizados do SharePoint
Crie os comandos personalizados que chamam no modelo de objeto do servidor para o SharePoint para recuperar dados da Web Parts no site do SharePoint.Cada comando é um método que tem SharePointCommandAttribute aplicado a ele.
Para definir comandos do SharePoint
Em o projeto de WebPartCommands, abra o arquivo de código de WebPartCommands, e então cole o seguinte código em ele.
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
Em esse ponto do passo-a-passo, todo o código para o nó de Galeria de Web Parts e comandos do SharePoint agora estão em projetos.Crie a solução para certificar-se que ambos os projetos criados sem erros.
Para criar a solução
Em a barra de menu, escolha Compilar, Compilar solução.
Cuidado Em este ponto, o projeto de WebPartNode pode ter um erro de compilação porque o arquivo de manifesto de VSIX não tem um valor para o autor.Este erro partirá quando você adiciona um valor em etapas posteriores.
Criando um conjunto de VSIX para implantar a extensão
Para implantar a extensão, use o projeto de VSIX em sua solução criar um conjunto de VSIX.Primeiro, configure o conjunto de VSIX modificando o arquivo de source.extension.vsixmanifest no projeto de VSIX.Em seguida, crie o conjunto de VSIX criando a solução.
Para configurar o conjunto de VSIX
Em Gerenciador de Soluções, no projeto de WebPartNode, abra o arquivo de manifesto source.extension.vsixmanifest no editor.
O arquivo de source.extension.vsixmanifest é a base para o arquivo de extension.vsixmanifest que quaisquer pacotes de VSIX exigem.Para obter mais informações sobre este arquivo, consulte Referência de esquema de extensão VSIX.
Em a caixa de Nome do produto , entre em Nó de galeria de Web parts para o server Explorer.
Em a caixa de Autor , entre em Contoso.
Em a caixa de descrição, entre adiciona um nó personalizado de galeria de Web parts para o nó de conexões do SharePoint no server Explorer. Esta extensão usa um comando personalizado do SharePoint chamar no modelo de objeto do servidor.
Escolha a guia de Ativos do editor, e então escolha o botão de Novo .
a caixa de diálogo de adicionar o novo recurso aparece.
Em a lista de Tipo , escolha Microsoft.VisualStudio.MefComponent.
Observação Esse valor corresponde ao elemento de MefComponent no arquivo de extension.vsixmanifest.Esse elemento especifica o nome de um assembly de extensão no conjunto de VSIX.Para obter mais informações, consulte MEFComponent Element.
Em a lista de Origem , escolha Um projeto na solução atual.
Em a lista de ProjetoWebPartNodeExtension , escolha e então escolha o botão de OK .
Em o editor manifesto, escolha o botão de Novo novamente.
a caixa de diálogo de adicionar o novo recurso aparece.
Em a caixa de Tipo , entre em SharePoint.Commands.v4.
Observação Esse elemento especifica uma extensão personalizada que você deseja incluir na extensão do Visual Studio.Para obter mais informações, consulte Elemento de ativos (esquema VSX).
Em a lista de Origem , escolha o item de lista de Um projeto na solução atual .
Em a lista de Projeto , escolha, e escolha WebPartCommandsno botão de OK .
Em a barra de menu, escolha Compilar, Compilar solução, e então certifique-se de que a solução compila sem erros.
Certifique-se de que a pasta de saída de compilação para o projeto de WebPartNode agora contém o arquivo de WebPartNode.vsix.
Por padrão, a pasta de saída de compilação é.\ bin \ debug de sob a pasta que contém o arquivo de projeto.
testando a extensão
Você agora está pronto para testar o novo nó de Galeria de Web Parts em Gerenciador de Servidores.Primeiro, iniciar a depuração a extensão em uma instância de avaliação do Visual Studio.Em seguida, use o novo nó de Web Parts na instância de avaliação de Visual Studio.
Para iniciar a depuração da extensão
Reinicie Visual Studio com credenciais administrativas, e abra a solução de WebPartNode.
Em o projeto de WebPartNodeExtension, abra o arquivo de código de SiteNodeExtension, e adicione um ponto de interrupção na primeira linha de código em métodos de NodeChildrenRequested e de CreateWebPartNodes .
Escolha a tecla F5 para iniciar a depuração.
O Visual Studio instala a extensão em %UserProfile%\AppData\Local\Microsoft\VisualStudio\11.0Exp\Extensions\Contoso\Web Part Gallery Node Extension for Server Explorer\1.0 e inicia uma instância de avaliação do Visual Studio.Você irá testar o item de projeto em esse caso do Visual Studio.
para testar a extensão
Em a instância de avaliação de Visual Studio, na barra de menu, escolha Modo de Visualização, Gerenciador de Servidores.
Execute as seguintes etapas se a página web do SharePoint que você deseja usar para testar não aparece sob o nó de Conexões do SharePoint em Gerenciador de Servidores:
Em Gerenciador de Servidores, abra o menu de atalho para Conexões do SharePoint, e então escolha Adicionar Conexão.
Em a caixa de diálogo de Adicione a conexão do SharePoint , digite o URL do site da web do SharePoint para o qual você deseja se conectar, e então escolha o botão de OK .
Para especificar o site da web do SharePoint no seu computador de desenvolvimento, entre em https://localhost.
Expanda o nó de conexão do site (que exibe o URL do seu site) em seguida, expanda o nó de site filho (por exemplo, Site da Equipe).
Verifique se o código em outra instância de Visual Studio pára no ponto de interrupção que você definiu anteriormente no método de NodeChildrenRequested , e então escolha F5 para continuar a depuração o projeto.
Em a instância de avaliação do Visual Studio, verifique se um novo nó chamado Galeria de Web Parts aparece sob o nó do site de nível superior e em seguida, expanda o nó de Galeria de Web Parts .
Verifique se o código em outra instância do Visual Studio pára no ponto de interrupção que você definiu anteriormente no método de CreateWebPartNodes , e então escolha a tecla F5 para continuar a depuração o projeto.
Em a instância de avaliação do Visual Studio, verifique se todas as Web Parts no site conectada aparece sob o nó de Galeria de Web Parts em Gerenciador de Servidores.
Em Gerenciador de Servidores, abra o menu de atalho para um Web Parts, e então escolha Propriedades.
Em a instância de Visual Studio que você está depurando, verifique se os detalhes sobre Web parts apareçam na janela de Propriedades .
Desinstalar a extensão do Visual Studio
Depois que você concluir testar a extensão, desinstalar a extensão do Visual Studio.
para desinstalar a extensão
Em a instância de avaliação de Visual Studio, na barra de menu, escolha Ferramentas, Extensões e Atualizações.
a caixa de diálogo de Extensões e Atualizações abre.
Em a lista de extensões Extensão do nó de galeria de Web parts para o server Explorer, escolha, e escolha no botão de Desinstalar .
Em a caixa de diálogo que aparece, escolha o botão de Sim para confirmar que você deseja desinstalar a extensão, e então escolha o botão de Reiniciar Agora para concluir a desinstalação.
Feche as duas instâncias do Visual Studio (a instância de avaliação e instância do Visual Studio em que a solução de WebPartNode estiver aberta.)
Consulte também
Tarefas
Criar um ícone ou outra imagem (Editor de imagens para ícones)
Referência
Outros recursos
Estendendo o nó de conexões do SharePoint no Server Explorer