다음을 통해 공유


방법: 서버 탐색기에서 기본 제공 SharePoint 노드에 대한 데이터 가져오기

서버 탐색기의 각 기본 제공 SharePoint 노드가 나타내는 기본 SharePoint 구성 요소에 대한 데이터를 가져올 수 있습니다.자세한 내용은 서버 탐색기에서 SharePoint 연결 노드 확장을 참조하십시오.

예제

다음 코드 예제에서는 서버 탐색기에서 목록 노드가 나타내는 기본 SharePoint 목록에 대한 데이터를 가져오는 방법을 보여 줍니다.기본적으로 목록 노드에는 웹 브라우저에서 목록을 열기 위해 클릭할 수 있는 브라우저에서 보기 상황에 맞는 메뉴 항목이 있습니다.이 예제에서는 Visual Studio에서 목록을 직접 여는 View in Visual Studio 상황에 맞는 메뉴 항목을 추가하여 목록 노드를 확장합니다.이 코드에서는 노드의 목록 데이터에 액세스하여 Visual Studio에서 열 목록의 URL을 가져옵니다.

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);
        }
    }
}

이 예제에서는 SharePoint 프로젝트 서비스를 사용하여 Visual Studio에서 목록을 여는 데 사용되는 DTE 개체를 가져옵니다.SharePoint 프로젝트 서비스에 대한 자세한 내용은 SharePoint 프로젝트 서비스 사용을 참조하십시오.

SharePoint 노드의 확장을 만드는 기본 작업에 대한 자세한 내용은 방법: 서버 탐색기에서 SharePoint 노드 확장을 참조하십시오.

코드 컴파일

이 예제에는 다음 어셈블리에 대한 참조가 필요합니다.

  • EnvDTE

  • Microsoft.VisualStudio.SharePoint

  • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

  • System.ComponentModel.Composition

확장 배포

서버 탐색기 확장을 배포하려면 어셈블리 및 확장과 함께 배포할 다른 모든 파일에 대한 VSIX(Visual Studio Extension) 패키지를 만듭니다.자세한 내용은 Visual Studio에서 SharePoint 도구에 대한 확장 배포를 참조하십시오.

참고 항목

개념

방법: 서버 탐색기에서 SharePoint 노드 확장

SharePoint 프로젝트 서비스 사용

Visual Studio에서 SharePoint 도구에 대한 확장 배포

기타 리소스

서버 탐색기에서 SharePoint 연결 노드 확장