SharePoint ツールの拡張機能でサーバー オブジェクト モデルを使用する必要がある場合は、API を呼び出すためのカスタム SharePoint コマンドを作成する必要があります。 SharePoint コマンドは、サーバー オブジェクト モデルを直接呼び出すことができるアセンブリで定義します。
SharePoint コマンドの用途の詳細については、「SharePoint オブジェクト モデルの呼び出し」を参照してください。
SharePoint コマンドを作成するには
次の構成のクラス ライブラリ プロジェクトを作成します。
.NET Framework 3.5 を対象とする構成 ターゲット フレームワークの選択の詳細については、「方法: 特定の .NET Framework のバージョンまたはプロファイルを対象として指定する」を参照してください。
AnyCPU または x64 プラットフォームを対象とする構成 既定では、クラス ライブラリ プロジェクトのターゲット プラットフォームは AnyCPU です。 ターゲット プラットフォームの選択の詳細については、「方法 : アプリケーションを特定の種類の CPU に最適化する」を参照してください。
注意
SharePoint コマンドは .NET Framework 3.5 を対象とし、SharePoint ツールの拡張機能は .NET Framework 4 を対象としているため、SharePoint ツールの拡張機能を定義する同じプロジェクトに SharePoint コマンドを実装することはできません。 拡張機能で使用される SharePoint コマンドは、別のプロジェクトで定義する必要があります。 詳細については、「Visual Studio での SharePoint ツールの拡張機能の配置」を参照してください。
次のアセンブリへの参照を追加します。
Microsoft.VisualStudio.SharePoint.Commands
Microsoft.SharePoint
プロジェクトのクラスに、SharePoint コマンドを定義するメソッドを作成します。 このメソッドは、次のガイドラインに準拠している必要があります。
パラメーターを 1 つまたは 2 つ持つことができること。
第 1 パラメーターは、ISharePointCommandContext オブジェクトにする必要があります。 このオブジェクトは、コマンドが実行される Microsoft.SharePoint.SPSite または Microsoft.SharePoint.SPWeb を提供します。 また、Visual Studio の [出力] ウィンドウまたは [エラー一覧] ウィンドウへのメッセージの書き込みに使用できる ISharePointCommandLogger オブジェクトも提供します。
第 2 パラメーターは、任意の型にすることができ、省略可能です。 SharePoint ツールの拡張機能から SharePoint コマンドにデータを渡す必要がある場合に、このパラメーターを SharePoint コマンドに追加できます。
戻り値を返すことができること (必須ではない)。
第 2 パラメーターと戻り値に Windows Communication Foundation (WCF) でシリアル化できる型が使用されていること。 詳細については、「Types Supported by the Data Contract Serializer」および「Using the XmlSerializer Class」を参照してください。
参照可能範囲 (public、internal、または private) を設定できること、および静的にも非静的にもできること。
SharePointCommandAttribute をメソッドに適用します。 この属性は、コマンドの一意識別子を指定します。この識別子がメソッド名と一致している必要はありません。
SharePoint ツールの拡張機能からコマンドを呼び出すときに、同じ一意識別子を指定する必要があります。 詳細については、「方法: SharePoint コマンドを実行する」を参照してください。
例
Contoso.Commands.UpgradeSolution という識別子を持つ SharePoint コマンドを次のコード例に示します。 このコマンドは、サーバー オブジェクト モデルの API を使用して、配置したソリューションにアップグレードします。
<SharePointCommand("Contoso.Commands.UpgradeSolution")> _
Private Sub UpgradeSolution(ByVal context As ISharePointCommandContext, ByVal fullWspPath As String)
Dim solution As SPSolution = SPFarm.Local.Solutions(Path.GetFileName(fullWspPath))
If solution Is Nothing Then
Throw New InvalidOperationException("The solution has not been deployed.")
End If
solution.Upgrade(fullWspPath)
End Sub
[SharePointCommand("Contoso.Commands.UpgradeSolution")]
private void UpgradeSolution(ISharePointCommandContext context, string fullWspPath)
{
SPSolution solution = SPFarm.Local.Solutions[Path.GetFileName(fullWspPath)];
if (solution == null)
{
throw new InvalidOperationException("The solution has not been deployed.");
}
solution.Upgrade(fullWspPath);
}
このコマンドには、暗黙の第 1 パラメーター ISharePointCommandContext に加えて、SharePoint サイトにアップグレードされる .wsp ファイルの完全パスが含まれているカスタムの文字列パラメーターもあります。 このコードのコンテキストを確認するには、「チュートリアル: SharePoint プロジェクトに対するカスタムの配置手順の作成」を参照してください。
コードのコンパイル
この例は、次のアセンブリへの参照を必要とします。
Microsoft.VisualStudio.SharePoint.Commands
Microsoft.SharePoint
コマンドの配置
コマンドを配置するには、コマンド アセンブリを、コマンドを使用する拡張機能アセンブリと同じ Visual Studio Extension (VSIX) パッケージに追加します。 また、コマンド アセンブリに対するエントリを extension.vsixmanifest ファイルに追加する必要もあります。 詳細については、「Visual Studio での SharePoint ツールの拡張機能の配置」を参照してください。