Como: Obter dados para um nó interno do SharePoint no Server Explorer
Para cada nó interno do SharePoint no Server Explorer, você pode obter dados para o componente do SharePoint subjacente que o nó representa. Para obter mais informações, consulte Estendendo o nó de conexões do SharePoint no Server Explorer.
Exemplo
O exemplo de código a seguir demonstra como obter dados para a lista do SharePoint subjacente representando um nó da lista no Server Explorer. Por padrão, nós da lista têm um View in Browser item de menu de contexto que você pode clicar para abrir as listas em um navegador da Web. Este exemplo estende a nós de lista, adicionando um modo de exibição de Visual Studio item de menu de contexto abre as listas diretamente no Visual Studio. O código acessa os dados da lista para o nó obter o URL da lista para abrir o Visual Studio.
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Explorer
Imports Microsoft.VisualStudio.SharePoint.Explorer.Extensions
Namespace Contoso.ServerExplorerExtension
<Export(GetType(IExplorerNodeTypeExtension))> _
<ExplorerNodeType(ExtensionNodeTypes.ListNode)> _
Friend Class ListNodeExtension
Implements IExplorerNodeTypeExtension
Private projectService As ISharePointProjectService
Private dteObject As EnvDTE.DTE
Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
Implements IExplorerNodeTypeExtension.Initialize
AddHandler nodeType.NodeMenuItemsRequested, AddressOf NodeMenuItemsRequested
End Sub
Private Sub NodeMenuItemsRequested(ByVal Sender As Object, ByVal e As ExplorerNodeMenuItemsRequestedEventArgs)
Dim menuItem = e.MenuItems.Add("View in Visual Studio")
AddHandler menuItem.Click, AddressOf MenuItemClick
End Sub
Private Sub MenuItemClick(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
' Get the data for the list node.
Dim node As IExplorerNode = CType(e.Owner, IExplorerNode)
Dim nodeInfo As IListNodeInfo = node.Annotations.GetValue(Of IListNodeInfo)()
If dteObject Is Nothing Then
If projectService Is Nothing Then
projectService = CType(node.ServiceProvider.GetService(GetType(ISharePointProjectService)),
ISharePointProjectService)
End If
dteObject = CType(projectService.ServiceProvider.GetService(GetType(EnvDTE.DTE)), EnvDTE.DTE)
End If
dteObject.ItemOperations.Navigate(nodeInfo.DefaultViewUrl.ToString(),
EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow)
End Sub
End Class
End Namespace
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Explorer;
using Microsoft.VisualStudio.SharePoint.Explorer.Extensions;
namespace Contoso.ServerExplorerExtension
{
[Export(typeof(IExplorerNodeTypeExtension))]
[ExplorerNodeType(ExtensionNodeTypes.ListNode)]
internal class ListNodeExtension : IExplorerNodeTypeExtension
{
private ISharePointProjectService projectService;
private EnvDTE.DTE dteObject;
public void Initialize(IExplorerNodeType nodeType)
{
nodeType.NodeMenuItemsRequested += nodeType_NodeMenuItemsRequested;
}
void nodeType_NodeMenuItemsRequested(object sender, ExplorerNodeMenuItemsRequestedEventArgs e)
{
IMenuItem menuItem = e.MenuItems.Add("View in Visual Studio");
menuItem.Click += menuItem_Click;
}
void menuItem_Click(object sender, MenuItemEventArgs e)
{
// Get the data for the list node.
IExplorerNode node = (IExplorerNode)e.Owner;
IListNodeInfo nodeInfo = node.Annotations.GetValue<IListNodeInfo>();
if (dteObject == null)
{
if (projectService == null)
{
projectService = (ISharePointProjectService)node.ServiceProvider.GetService(
typeof(ISharePointProjectService));
}
dteObject = (EnvDTE.DTE)projectService.ServiceProvider.GetService(typeof(EnvDTE.DTE));
}
dteObject.ItemOperations.Navigate(nodeInfo.DefaultViewUrl.ToString(),
EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow);
}
}
}
Este exemplo usa o serviço de projeto do SharePoint para obter o DTE lista de objeto que é usado para abrir no Visual Studio. Para obter mais informações sobre o serviço de projeto do SharePoint, consulte Usando o serviço de projeto do SharePoint.
Para obter mais informações sobre as tarefas básicas para criar uma extensão para um nó do SharePoint, consulte Como: Estender um nó do SharePoint no Server Explorer.
Compilando o código
Este exemplo requer referências aos assemblies seguintes:
EnvDTE
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
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
Conceitos
Usando o serviço de projeto do SharePoint
Outros recursos
Estendendo o nó de conexões do SharePoint no Server Explorer
Como: Estender um nó do SharePoint no Server Explorer
Implantar extensões para as ferramentas do SharePoint em Visual Studio