次の方法で共有


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

ショートカット メニュー項目を任意の SharePoint プロジェクトに追加できます。 このメニュー項目は、ユーザーがソリューション エクスプローラーでプロジェクト ノードを右クリックすると表示されます。

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

ショートカット メニュー項目を SharePoint プロジェクトに追加するには

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

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

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

ソリューション エクスプローラーの SharePoint プロジェクト ノードにショートカット メニュー項目を追加する方法を次のコード例に示します。 ユーザーがプロジェクト ノードを右クリックし、[出力ウィンドウへのメッセージの書き込み] メニュー項目をクリックすると、Visual Studio の [出力] ウィンドウにメッセージが表示されます。 この例では、SharePoint プロジェクト サービスを使用して、メッセージを表示します。 詳細については、「SharePoint プロジェクト サービスの使用」を参照してください。

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

Namespace Contoso.Examples

    <Export(GetType(ISharePointProjectExtension))> _
    Friend Class ExampleProjectExtensionWithMenu
        Implements ISharePointProjectExtension

        Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
            Implements ISharePointProjectExtension.Initialize
            AddHandler projectService.ProjectMenuItemsRequested, AddressOf ProjectMenuItemsRequested
        End Sub

        Private Sub ProjectMenuItemsRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectMenuItemsRequestedEventArgs)
            Dim menuItem As IMenuItem = e.ActionMenuItems.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 project As ISharePointProject = TryCast(e.Owner, ISharePointProject)
            If project IsNot Nothing Then
                project.ProjectService.Logger.WriteLine(
                    String.Format("This message was written from a shortcut menu for the {0} project.", project.Name),
                    LogCategory.Status)
            End If
        End Sub
    End Class
End Namespace
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples
{
    [Export(typeof(ISharePointProjectExtension))]
    internal class ExampleProjectExtensionWithMenu : ISharePointProjectExtension
    {
        public void Initialize(ISharePointProjectService projectService)
        {
            projectService.ProjectMenuItemsRequested += projectService_ProjectMenuItemsRequested;
        }

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

        void MenuItemExtension_Click(object sender, MenuItemEventArgs e)
        {
            ISharePointProject project = e.Owner as ISharePointProject;
            if (project != null)
            {
                project.ProjectService.Logger.WriteLine(
                    String.Format("This message was written from a shortcut menu for the {0} project.", project.Name),
                    LogCategory.Status);
            }
        }
    }
}

コードのコンパイル

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

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

拡張機能の配置

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

参照

その他の技術情報

SharePoint プロジェクトの拡張

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

方法: SharePoint プロジェクトにプロパティを追加する