如何:执行 SharePoint 命令

若要在 SharePoint 工具扩展中使用服务器对象模型,必须创建自定义 SharePoint 命令以调用 API。 在定义该命令并将其与 SharePoint 工具扩展一起部署之后,您的扩展可以执行该命令以调入 SharePoint 服务器对象模型。 若要执行该命令,请使用 ISharePointConnection 对象的 ExecuteCommand 方法之一。

有关 SharePoint 命令的用途的更多信息,请参见调入 SharePoint 对象模型

执行 SharePoint 命令

  1. 在 SharePoint 工具扩展中,获取 ISharePointConnection 对象。 获取 ISharePointConnection 对象的方式取决于所创建的扩展的类型:

  2. 调用 ISharePointConnection 对象的 ExecuteCommand 方法之一。 将要执行的命令的名称传递给 ExecuteCommand 方法的第一个参数。 如果您的命令具有一个自定义参数,请将该参数传递给 ExecuteCommand 方法的第二个参数。

    针对每个支持的命令签名的 ExecuteCommand 重载各不相同。 下表列出了支持的签名以及用于每个签名的重载。

    命令签名

    要使用的 ExecuteCommand 重载

    此命令仅具有默认的 ISharePointCommandContext 参数,没有返回值。

    ExecuteCommand(String)

    此命令仅具有默认的 ISharePointCommandContext 参数和一个返回值。

    ExecuteCommand<TResult>(String)

    此命令具有两个参数(默认的 ISharePointCommandContext 参数和一个自定义参数),没有返回值。

    ExecuteCommand<T>(String, T)

    此命令具有两个参数和一个返回值。

    ExecuteCommand<T, TResult>(String, T)

示例

下面的代码示例演示如何使用 ExecuteCommand<T>(String, T) 重载来调用如何:创建 SharePoint 命令中所述的 Contoso.Commands.UpgradeSolution 命令。

Private Sub Execute(ByVal context As IDeploymentContext) _
    Implements IDeploymentStep.Execute
    context.Logger.WriteLine("Upgrading solution: " & solutionName, LogCategory.Status)
    context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", _
        solutionFullPath)
End Sub
public void Execute(IDeploymentContext context)
{
    context.Logger.WriteLine("Upgrading solution: " + solutionName, LogCategory.Status);
    context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution",
        solutionFullPath);
}

此示例中演示的 Execute 方法是自定义部署步骤中的 IDeploymentStep 接口的 Execute 方法的实现。 若要在一个更大的示例上下文中查看此代码,请参见演练:为 SharePoint 项目创建自定义部署步骤

请注意下面有关 ExecuteCommand<T>(String, T) 方法调用的详细信息:

  • 第一个参数标识要调用的命令。 此字符串与传递给命令定义上的 SharePointCommandAttribute 的值匹配。

  • 第二个参数是要传递给命令的第二个自定义参数的值。 在本例中,该参数是要升级到 SharePoint 网站的 .wsp 文件的完整路径。

  • 此代码不会将隐式 ISharePointCommandContext 参数传递给命令。 当从 SharePoint 项目系统的扩展或**“服务器资源管理器”中的“SharePoint 连接”**节点的扩展中调用该命令时,此参数会自动传递给该命令。 在其他类型的解决方案中(如在实现 Microsoft.VisualStudio.TemplateWizard.IWizard 接口的项目模板向导中),此参数为 null。

编译代码

此示例需要引用 Microsoft.VisualStudio.SharePoint 程序集。

请参见

任务

演练:扩展服务器资源管理器以显示 Web 部件

概念

调入 SharePoint 对象模型

其他资源

如何:创建 SharePoint 命令