Como adicionar um item de menu de atalho a uma extensão SharePoint item de projeto

Você pode adicionar um item de menu de atalho a um item SharePoint projeto existente usando uma extensão de item de projeto. O item de menu aparece quando um usuário clica com o botão direito do mouse no item de projeto no Gerenciador de Soluções.

As etapas a seguir pressuem que você já criou uma extensão de item de projeto. Para obter mais informações, consulte Como criar uma extensão SharePoint de item de projeto.

Para adicionar um item de menu de atalho em uma extensão de item de projeto

  1. No método Initialize de sua ISharePointProjectItemTypeExtension implementação, manipular o evento do ProjectItemMenuItemsRequested parâmetro projectItemType.

  2. No manipulador de eventos do evento, adicione um novo objeto à coleção ProjectItemMenuItemsRequested ou do parâmetro de IMenuItem ViewMenuItems AddMenuItems argumentos de evento.

  3. No manipulador de eventos do novo objeto, execute as tarefas que você deseja executar quando um usuário Click clicar no item de menu de IMenuItem atalho.

Exemplo

O exemplo de código a seguir demonstra como adicionar um item de menu de atalho ao item de projeto do Receptor de Eventos. Quando o usuário clica com o botão direito do mouse no item de projeto no Gerenciador de Soluções e clica no item de menu Gravar Mensagem Janela de Saída, Visual Studio exibe uma mensagem na janela Saída.

Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.Examples.ProjectItemExtensionWithMenu

    <Export(GetType(ISharePointProjectItemTypeExtension))> _
    <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")> _
    Friend Class ExampleProjectItemExtensionWithMenu
        Implements ISharePointProjectItemTypeExtension

        Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
            Implements ISharePointProjectItemTypeExtension.Initialize
            AddHandler projectItemType.ProjectItemMenuItemsRequested, AddressOf ProjectItemMenuItemsRequested
        End Sub

        Private Sub ProjectItemMenuItemsRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectItemMenuItemsRequestedEventArgs)
            Dim menuItem As IMenuItem = e.ViewMenuItems.Add("Write Message to Output Window")
            AddHandler menuItem.Click, AddressOf MenuItem_Click
        End Sub

        Private Sub MenuItem_Click(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim projectItem As ISharePointProjectItem = CType(e.Owner, ISharePointProjectItem)
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name),
                LogCategory.Status)
        End Sub
    End Class
End Namespace
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples.ProjectItemExtensionWithMenu
{
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")]
    internal class ExampleProjectItemExtensionWithMenu : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.ProjectItemMenuItemsRequested += projectItemType_ProjectItemMenuItemsRequested;
        }

        void projectItemType_ProjectItemMenuItemsRequested(object sender, 
            SharePointProjectItemMenuItemsRequestedEventArgs e)
        {
            IMenuItem menuItem = e.ViewMenuItems.Add("Write Message to Output Window");
            menuItem.Click += MenuItemExtension_Click;
        }

        void MenuItemExtension_Click(object sender, MenuItemEventArgs e)
        {
            ISharePointProjectItem projectItem = (ISharePointProjectItem)e.Owner;
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name), 
                LogCategory.Status);
        }
    }
}

Este exemplo usa o SharePoint serviço de projeto para gravar a mensagem na janela Saída. Para obter mais informações, consulte Usar o SharePoint serviço de projeto.

Compilar o código

Este exemplo requer um projeto de biblioteca de classes com referências aos seguintes assemblies:

  • Microsoft.VisualStudio. SharePoint

  • System.ComponentModel.Composition

Implantar a extensão

Para implantar a extensão, crie um pacote de extensão (VSIX) para o assembly e quaisquer outros arquivos que você Visual Studio deseja distribuir com a extensão. Para obter mais informações, consulte Implantar extensões para as ferramentas SharePoint no Visual Studio.

Confira também