次の方法で共有


方法: ショートカット メニュー項目を SharePoint プロジェクト項目の拡張機能に追加する

既存の SharePoint プロジェクト項目にショートカット メニュー項目を追加するには、プロジェクト項目の拡張機能を使用します。 このメニュー項目は、ユーザーがソリューション エクスプローラーでプロジェクト項目を右クリックすると表示されます。

次の手順は、プロジェクト項目の拡張機能が既に作成されていることを前提としています。 詳細については、「方法: SharePoint プロジェクト項目の拡張機能を作成する」を参照してください。

ショートカット メニュー項目をプロジェクト項目の拡張機能に追加するには

  1. ISharePointProjectItemTypeExtension 実装の Initialize メソッドで、projectItemType パラメーターの ProjectItemMenuItemsRequested イベントを処理します。

  2. ProjectItemMenuItemsRequested イベントのイベント ハンドラーで、新しい IMenuItem オブジェクトをイベント引数パラメーターの ViewMenuItems コレクションまたは AddMenuItems コレクションに追加します。

  3. 新しい IMenuItem オブジェクトの Click イベント ハンドラーで、ユーザーがショートカット メニュー項目をクリックしたときに実行するタスクを実行します。

ショートカット メニュー項目をイベント レシーバー プロジェクト項目に追加する方法を次のコード例に示します。 ユーザーがソリューション エクスプローラーでプロジェクト項目を右クリックし、[出力ウィンドウへのメッセージの書き込み] メニュー項目をクリックすると、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 プロジェクト サービスの使用」を参照してください。

コードのコンパイル

この例では、次のアセンブリへの参照を含むクラス ライブラリ プロジェクトが必要です。

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

拡張機能の配置

拡張機能を配置するには、アセンブリと、拡張機能に同梱する必要のあるその他のファイルを提供するための Visual Studio Extension (VSIX) パッケージを作成します。 詳細については、「Visual Studio での SharePoint ツールの拡張機能の配置」を参照してください。

参照

処理手順

チュートリアル: SharePoint プロジェクト項目の種類の拡張

その他の技術情報

方法: SharePoint プロジェクト項目の拡張機能を作成する

方法: SharePoint プロジェクト項目の拡張機能にプロパティを追加する

SharePoint プロジェクト項目の拡張