Como: Recuperar o serviço de projeto do SharePoint

Você pode acessar o serviço de projeto do SharePoint nos seguintes tipos de soluções:

  • Uma extensão do sistema de projeto SharePoint, como, por exemplo, uma extensão de projeto, a extensão de item de projeto ou a definição de tipo de item de projeto. Para obter mais informações sobre esses tipos de extensões, consulte Estendendo o sistema de projeto do SharePoint.

  • Uma extensão de sharepoint Connections nó na Server Explorer. Para obter mais informações sobre esses tipos de extensões, consulte Estendendo o nó de conexões do SharePoint no Server Explorer.

  • Outro tipo de extensão de Visual Studio, como, por exemplo, um suplemento ou um VSPackage.

Recuperando o serviço de extensões de sistema do projeto

Em qualquer extensão do sistema de projeto do SharePoint, você pode acessar o serviço de projeto usando o ProjectService propriedade de um ISharePointProject objeto.

Você também pode recuperar o serviço de projeto usando os procedimentos a seguir.

Para recuperar o serviço em uma extensão de projeto

  1. Na implementação da ISharePointProjectExtension interface, localize o Initialize método.

  2. Use o projectService parâmetro para acessar o serviço.

    O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma extensão de projeto simples.

    <Export(GetType(ISharePointProjectExtension))> _
    Friend Class GetServiceInProject
        Implements ISharePointProjectExtension
    
        Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
            Implements ISharePointProjectExtension.Initialize
            projectService.Logger.WriteLine("This message was written by using the " & _
                "project service in a project extension.", LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectExtension))]
    internal class GetServiceInProject : ISharePointProjectExtension
    {
        public void Initialize(ISharePointProjectService projectService)
        {
            projectService.Logger.WriteLine("This message was written by using the " +
                "project service in a project extension.", LogCategory.Message);
        }
    }
    

    Para obter mais informações sobre como criar extensões do projeto, consulte Como: Criar uma extensão de projeto do SharePoint.

Para recuperar o serviço em uma extensão de item de projeto

  1. Na implementação da ISharePointProjectItemTypeExtension interface, localize o Initialize método.

  2. Use o ProjectService propriedade da projectItemType parâmetro para recuperar o serviço.

    O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma simples extensão da Definição de lista o item de projeto.

    <Export(GetType(ISharePointProjectItemTypeExtension))> _
    <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")> _
    Friend Class GetServiceInProjectItem
        Implements ISharePointProjectItemTypeExtension
    
        Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
            Implements ISharePointProjectItemTypeExtension.Initialize
            projectItemType.ProjectService.Logger.WriteLine("This message was written " & _
                "by using the project service in an extension for the ListDefinition project item.", _
                LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")]
    internal class GetServiceInProjectItem : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.ProjectService.Logger.WriteLine("This message was written " +
                "by using the project service in an extension for the ListDefinition project item.", 
                LogCategory.Message);
        }
    }
    

    Para obter mais informações sobre como criar extensões de item de projeto, consulte Como: Criar uma extensão de Item de projeto do SharePoint.

Para recuperar o serviço de uma definição de tipo de item de projeto

  1. Na implementação da ISharePointProjectItemTypeProvider interface, localize o InitializeType método.

  2. Use o ProjectService propriedade da typeDefinition parâmetro para recuperar o serviço.

    O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma definição de tipo de item de projeto simples.

    <Export(GetType(ISharePointProjectItemTypeProvider))> _
    <SharePointProjectItemType("Contoso.CustomAction")> _
    Friend Class CustomActionProvider
        Implements ISharePointProjectItemTypeProvider
    
        Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
            Implements ISharePointProjectItemTypeProvider.InitializeType
            projectItemTypeDefinition.ProjectService.Logger.WriteLine("This message was written " & _
                "by using the project service in the Custom Action project item type.", _
                LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectItemTypeProvider))]
    [SharePointProjectItemType("Contoso.CustomAction")]
    internal class CustomActionProvider : ISharePointProjectItemTypeProvider
    {
        public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
        {
            projectItemTypeDefinition.ProjectService.Logger.WriteLine("This message was written " +
                "by using the project service in the Custom Action project item type definition.",
                LogCategory.Message);
        }
    }
    

    Para obter mais informações sobre como definir os tipos de item de projeto, consulte Como: Definir um tipo de Item de projeto do SharePoint.

Recuperando o serviço de extensões de servidor do Explorer

Em uma extensão da sharepoint ConnectionsServer Explorer, você pode acessar o serviço de projeto usando o ServiceProvider propriedade de um IExplorerNode objeto.

Para recuperar o serviço de uma extensão do Server Explorer

  1. Obtenha um IServiceProvider de objeto da ServiceProvider propriedade de um IExplorerNode objeto em sua extensão.

  2. Use o GetService método para solicitar um ISharePointProjectService objeto.

    O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela a partir de um menu de atalho, adiciona a extensão de nós de lista em Server Explorer.

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExtensionNodeTypes.ListNode)> _
    Friend Class ListNodeExtension
        Implements IExplorerNodeTypeExtension
    
        Private projectService As ISharePointProjectService
    
        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeMenuItemsRequested, AddressOf nodeType_NodeMenuItemsRequested
        End Sub
    
        Private Sub nodeType_NodeMenuItemsRequested(ByVal Sender As Object, ByVal e As ExplorerNodeMenuItemsRequestedEventArgs)
            Dim writeMessageMenuItem As IMenuItem = e.MenuItems.Add("Write Message to Output Window and Error List Window")
            AddHandler writeMessageMenuItem.Click, AddressOf writeMessageMenuItem_Click
        End Sub
    
        Private Sub writeMessageMenuItem_Click(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim node As IExplorerNode = CType(e.Owner, IExplorerNode)
            If projectService Is Nothing Then
                projectService = CType(node.ServiceProvider.GetService(GetType(ISharePointProjectService)), ISharePointProjectService)
            End If
            projectService.Logger.WriteLine("Clicked the menu item for " + node.Text, LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExtensionNodeTypes.ListNode)]
    internal class ListNodeExtension : IExplorerNodeTypeExtension
    {
        private ISharePointProjectService projectService;
    
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeMenuItemsRequested += nodeType_NodeMenuItemsRequested;
        }
    
        void nodeType_NodeMenuItemsRequested(object sender, ExplorerNodeMenuItemsRequestedEventArgs e)
        {
            IMenuItem writeMessageMenuItem = e.MenuItems.Add("Write Message to Output Window and Error List Window");
            writeMessageMenuItem.Click += writeMessageMenuItem_Click;
        }
    
        void writeMessageMenuItem_Click(object sender, MenuItemEventArgs e)
        {
            IExplorerNode node = (IExplorerNode)e.Owner;
            if (projectService == null)
            {
                projectService = (ISharePointProjectService)node.ServiceProvider.GetService(typeof(ISharePointProjectService));
            }
    
            projectService.Logger.WriteLine("Clicked the menu item for " + node.Text, LogCategory.Message);
        }
    }
    

    Para obter mais informações sobre como estender o sharepoint ConnectionsServer Explorer, consulte Como: Estender um nó do SharePoint no Server Explorer.

Recuperando o serviço de outras extensões de Visual Studio

Você pode recuperar o serviço de projeto em um VSPackage ou em qualquer extensão de Visual Studio que tem acesso a uma EnvDTE80.DTE2 o objeto no modelo de objeto de automação, como, por exemplo, um suplemento ou um Assistente de modelo de projeto que implementa o Microsoft.VisualStudio.TemplateWizard.IWizard interface.

Um VSPackage, você pode solicitar um ISharePointProjectService o objeto usando um dos seguintes métodos:

Em uma extensão de Visual Studio tem acesso a um EnvDTE80.DTE2 o objeto, você pode solicitar um ISharePointProjectService objeto usando o GetService() método de um Microsoft.VisualStudio.Shell.ServiceProvider objeto. Para obter mais informações, consulte How to: Get a Service from the DTE Object.

Exemplo

O exemplo de código a seguir demonstra como recuperar o serviço de projeto em um suplemento de Visual Studio. Para usar esse código, executá-lo do Connect a classe em um suplemento do projeto. O _applicationObject objeto é gerado automaticamente nos projetos do suplemento; Este objeto é uma instância de EnvDTE80.DTE2 interface.

Dim serviceProvider As Microsoft.VisualStudio.Shell.ServiceProvider = _
    New Microsoft.VisualStudio.Shell.ServiceProvider( _
        TryCast(_applicationObject, Microsoft.VisualStudio.OLE.Interop.IServiceProvider))

Dim projectService As Microsoft.VisualStudio.SharePoint.ISharePointProjectService = _
    TryCast(serviceProvider.GetService(GetType(Microsoft.VisualStudio.SharePoint.ISharePointProjectService)), _
        Microsoft.VisualStudio.SharePoint.ISharePointProjectService)

If projectService IsNot Nothing Then
    projectService.Logger.WriteLine("This message was written by using the SharePoint project service.", _
        Microsoft.VisualStudio.SharePoint.LogCategory.Message)
End If
Microsoft.VisualStudio.Shell.ServiceProvider serviceProvider =
    new Microsoft.VisualStudio.Shell.ServiceProvider(
    _applicationObject as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);

Microsoft.VisualStudio.SharePoint.ISharePointProjectService projectService = 
    serviceProvider.GetService(typeof(Microsoft.VisualStudio.SharePoint.ISharePointProjectService))
    as Microsoft.VisualStudio.SharePoint.ISharePointProjectService;

if (projectService != null)
{
    projectService.Logger.WriteLine("This message was written by using the SharePoint project service.",
        Microsoft.VisualStudio.SharePoint.LogCategory.Message);
}

Este exemplo requer:

  • Um Visual Studio suplemento do projeto. Para obter mais informações, consulte Como: criar um Adicionar-.

  • Referências aos assemblies Microsoft.VisualStudio.OLE.Interop, Microsoft.VisualStudio.Shell e Microsoft.VisualStudio.SharePoint.

Consulte também

Tarefas

Como: criar um Adicionar-

How to: Consume a Service

How to: Get a Service from the DTE Object

Como: Usar assistentes com modelos de projeto

Conceitos

Usando o serviço de projeto do SharePoint