방법: 서버 탐색기에서 기본 제공 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 도구에 대한 확장 배포를 참조하십시오.