方法: SharePoint コマンドを作成する

SharePoint ツールの拡張機能でサーバー オブジェクト モデルを使用する必要がある場合は、API を呼び出すためのカスタム SharePoint コマンドを作成する必要があります。SharePoint コマンドは、サーバー オブジェクト モデルを直接呼び出すことができるアセンブリで定義します。

SharePoint コマンドの用途の詳細については、「SharePoint オブジェクト モデルの呼び出し」を参照してください。

SharePoint コマンドを作成するには

  1. 次の構成のクラス ライブラリ プロジェクトを作成します。

    [!メモ]

    SharePoint コマンドは .NET Framework 3.5 を対象とし、SharePoint ツールの拡張機能は .NET Framework 4 を対象としているため、SharePoint ツールの拡張機能を定義する同じプロジェクトに SharePoint コマンドを実装することはできません。拡張機能で使用される SharePoint コマンドは、別のプロジェクトで定義する必要があります。詳細については、「Visual Studio での SharePoint ツールの拡張機能の配置」を参照してください。

  2. 次のアセンブリへの参照を追加します。

    • Microsoft.VisualStudio.SharePoint.Commands

    • Microsoft.SharePoint

  3. プロジェクトのクラスに、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) を設定できること、および静的にも非静的にもできること。

  4. 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 ツールの拡張機能の配置」を参照してください。

参照

処理手順

方法: SharePoint コマンドを実行する

チュートリアル: サーバー エクスプローラーを拡張して Web パーツを表示する

概念

SharePoint オブジェクト モデルの呼び出し