共用方式為


HOW TO:建立 SharePoint 命令

如果您要在 SharePoint 工具擴充功能中使用伺服器物件模型,則必須建立自訂的「SharePoint 命令」(SharePoint Command) 來呼叫 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,可在其上執行命令。 它也提供 ISharePointCommandLogger 物件,可用來在 Visual Studio 中將訊息寫入 [輸出] 視窗或 [錯誤清單] 視窗。

      第二個參數的型別您可自行選擇,但這個參數是選擇性的。 如果需要從 SharePoint 工具擴充功能將資料傳遞至命令,請將這個參數加入至 SharePoint 命令。

    • 它可以擁有傳回值,但這是選擇性的。

    • 第二個參數和傳回值的型別必須是能夠由 Windows Communication Foundation (WCF) 序列化的型別。 如需詳細資訊,請參閱Types Supported by the Data Contract SerializerUsing the XmlSerializer Class

    • 方法可以具有任何可視性 (public、internal 或 private),且可以是靜態或非靜態。

  4. SharePointCommandAttribute 套用至方法。 此屬性會指定命令的唯一識別項;此識別項不需要符合方法名稱。

    當您從 SharePoint 工具擴充功能呼叫命令時,您必須指定相同的唯一識別項。 如需詳細資訊,請參閱 HOW TO:執行 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 物件模型

其他資源

HOW TO:執行 SharePoint 命令