如何:將快捷方式功能表項目加入至 SharePoint 專案專案延伸模組

您可以使用專案專案延伸,將快捷方式功能表項目加入至現有的 SharePoint 專案專案。 當使用者以滑鼠右鍵按一下 方案總管 中的專案專案時,就會顯示功能表項目。

下列步驟假設您已建立專案專案延伸模組。 如需詳細資訊,請參閱如何:建立 SharePoint 專案專案延伸

在專案專案延伸中加入快捷方式功能表項目

  1. Initialize 您的實作為方法中 ISharePointProjectItemTypeExtension ,處理 ProjectItemMenuItemsRequested projectItemType 參數的事件。

  2. 在事件的事件處理常式中 ProjectItemMenuItemsRequested ,將新的 IMenuItem 物件加入至 ViewMenuItems AddMenuItems 事件引數參數的或集合。

  3. Click 新物件的事件處理常式中 IMenuItem ,執行您要在使用者按一下快捷方式功能表項目時執行的工作。

範例

下列程式碼範例示範如何將快捷方式功能表項目加入至事件接收器專案專案。 當使用者以滑鼠右鍵按一下 方案總管 中的專案專案,然後按一下 [寫入訊息] 輸出視窗 功能表項目時,Visual Studio 會在 [輸出] 視窗中顯示一則訊息。

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

這個範例會使用 SharePoint 專案服務將訊息寫入至 [輸出] 視窗。 如需詳細資訊,請參閱使用 SharePoint 專案服務

編譯程式碼

此範例需要類別庫專案,其中包含下列元件的參考:

  • VisualStudio。SharePoint

  • System.ComponentModel.Composition

部署延伸模組

若要部署擴充功能,請 Visual Studio 為元件和您想要使用擴充功能散發的任何其他檔案,建立 (VSIX) 封裝的延伸模組。 如需詳細資訊,請參閱Visual Studio 中的部署 SharePoint 工具的擴充功能。

另請參閱