如何:创建 SharePoint 命令

若要在 SharePoint 工具扩展中使用服务器对象模型,必须创建自定义 SharePoint 命令以调用 API。 在可直接调入服务器对象模型的程序集中定义 SharePoint 命令。

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

创建 SharePoint 命令

  1. 创建一个具有以下配置的类库项目:

    提示

    无法在定义 SharePoint 工具扩展的相同项目中实现 SharePoint 命令,因为 SharePoint 命令面向 .NET Framework 3.5,而 SharePoint 工具扩展面向 .NET Framework 4。 必须在单独的项目中定义由您的扩展使用的任何 SharePoint 命令。 有关更多信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展

  2. 添加对下列程序集的引用:

    • Microsoft.VisualStudio.SharePoint.Commands

    • Microsoft.SharePoint

  3. 在项目的类中,创建一个定义 SharePoint 命令的方法。 该方法必须符合下列准则:

    • 该方法可以具有一个或两个参数。

      第一个参数必须是 ISharePointCommandContext 对象。 此对象提供要在其中执行所定义的命令的 Microsoft.SharePoint.SPSiteMicrosoft.SharePoint.SPWeb。 此对象还提供可用于将消息写入到 Visual Studio 中的**“输出”窗口或“错误列表”**窗口的 ISharePointCommandLogger 对象。

      第二个参数可以是您选择的类型,但此参数是可选的。 如果您需要将 SharePoint 工具扩展中的数据传递给 SharePoint 命令,则可以将此参数添加到该命令中。

    • 该方法还可以具有一个返回值,但此值是可选的。

    • 第二个参数和返回值必须属于可由 Windows Communication Foundation (WCF) 序列化的类型。 有关更多信息,请参见Types Supported by the Data Contract SerializerUsing 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);
}

除第一个隐式 ISharePointCommandContext 参数外,此命令还具有一个自定义字符串参数,该参数包含要升级到 SharePoint 网站的 .wsp 文件的完整路径。 若要在一个更大的示例上下文中查看此代码,请参见演练:为 SharePoint 项目创建自定义部署步骤

编译代码

此示例需要对以下程序集的引用:

  • Microsoft.VisualStudio.SharePoint.Commands

  • Microsoft.SharePoint

部署命令

若要部署命令,请将相应的命令程序集与使用该命令的扩展程序集一起包括在同一 Visual Studio 扩展 (VSIX) 包中。 还必须在 extension.vsixmanifest 文件中为该命令程序集添加一个条目。 有关更多信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展

请参见

任务

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

概念

调入 SharePoint 对象模型

其他资源

如何:执行 SharePoint 命令