ショートカット メニュー項目を任意の SharePoint プロジェクトに追加できます。 このメニュー項目は、ユーザーがソリューション エクスプローラーでプロジェクト ノードを右クリックすると表示されます。
次の手順は、プロジェクトの拡張機能が既に作成されていることを前提としています。 詳細については、「方法: SharePoint プロジェクトの拡張機能を作成する」を参照してください。
ショートカット メニュー項目を SharePoint プロジェクトに追加するには
ISharePointProjectExtension 実装の Initialize メソッドで、projectService パラメーターの ProjectMenuItemsRequested イベントを処理します。
ProjectMenuItemsRequested イベントのイベント ハンドラーで、新しい IMenuItem オブジェクトをイベント引数パラメーターの ActionMenuItems コレクションまたは AddMenuItems コレクションに追加します。
新しい 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 ツールの拡張機能の配置」を参照してください。