HOW TO:建立 SharePoint 命令
如果您要在 SharePoint 工具擴充功能中使用伺服器物件模型,則必須建立自訂的「SharePoint 命令」(SharePoint Command) 來呼叫 API。 您可以在能夠直接呼叫伺服器物件模型的組件中定義 SharePoint 命令。
如需 SharePoint 命令用途的詳細資訊,請參閱呼叫 SharePoint 物件模型。
若要建立 SharePoint 命令
建立具有下列配置的類別庫專案:
將 .NET Framework 3.5 做為目標。 如需選取目標架構的詳細資訊,請參閱 HOW TO:以特定的 .NET Framework 版本或設定檔為目標。
將 AnyCPU 或 x64 平台做為目標。 類別庫專案的預設目標平台是 AnyCPU。 如需選取目標平台的詳細資訊,請參閱 HOW TO:最佳化特定 CPU 類型的應用程式。
注意事項
您不能在定義 SharePoint 工具擴充功能的相同專案中實作 SharePoint 命令,因為 SharePoint 命令以 .NET Framework 3.5 為目標,而 SharePoint 工具擴充功能以 .NET Framework 4 為目標。 您必須在個別專案中定義由您的擴充功能使用的任何 SharePoint 命令。 如需詳細資訊,請參閱部署 Visual Studio 中 SharePoint 工具的擴充功能。
加入下列組件的參考:
Microsoft.VisualStudio.SharePoint.Commands
Microsoft.SharePoint
在專案的類別中,幾件案例定義 SharePoint 命令的方法。 該方法必須遵守以下方針:
它可以擁有一或兩個參數。
第一個參數必須是 ISharePointCommandContext 物件。 此物件提供 Microsoft.SharePoint.SPSite 或 Microsoft.SharePoint.SPWeb,可在其上執行命令。 它也提供 ISharePointCommandLogger 物件,可用來在 Visual Studio 中將訊息寫入 [輸出] 視窗或 [錯誤清單] 視窗。
第二個參數的型別您可自行選擇,但這個參數是選擇性的。 如果需要從 SharePoint 工具擴充功能將資料傳遞至命令,請將這個參數加入至 SharePoint 命令。
它可以擁有傳回值,但這是選擇性的。
第二個參數和傳回值的型別必須是能夠由 Windows Communication Foundation (WCF) 序列化的型別。 如需詳細資訊,請參閱Types Supported by the Data Contract Serializer和Using the XmlSerializer Class。
方法可以具有任何可視性 (public、internal 或 private),且可以是靜態或非靜態。
將 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 工具的擴充功能。