次の方法で共有


方法: 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 オブジェクト モデルの呼び出し

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

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