Практическое руководство. Создание команды SharePoint
Если в расширениях средств SharePoint требуется использовать серверную объектную модель, необходимо создать для вызова API настраиваемую команду SharePoint.Команда SharePoint определяется в сборке, которая может напрямую вызывать серверную объектную модель.
Дополнительные сведения о командах SharePoint см. в разделе Вызов объектных моделей SharePoint.
Создание команды SharePoint
Создайте проект библиотеки классов с приведенной ниже конфигурацией.
Предназначенный для платформы .NET Framework 3.5.Дополнительные сведения о выборе целевой платформы см. в разделе Практическое руководство. Определение целевой версии .NET Framework.
Предназначенный для AnyCPU или платформы x64.По умолчанию целевой платформой проектов библиотек классов является AnyCPU.Дополнительные сведения о выборе целевой платформы см. в разделе How to: Optimize an Application for a Specific CPU Type.
Примечание
Команду SharePoint нельзя реализовать в том же проекта, в котором определяется расширение средств SharePoint, поскольку целевой платформой команд SharePoint является .NET Framework 3.5, а расширения средств SharePoint предназначены для .NET Framework 4.Следует определить все команды SharePoint, используемые расширением в отдельном проекте.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.
Добавьте ссылки на следующие сборки:
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.Дополнительные сведения см. в разделе Практическое руководство. Выполнение команды SharePoint.
Пример
В следующем примере кода показана команда SharePoint с идентификатором Contoso.Commands.UpgradeSolution.Эта команда использует интерфейсы 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 у этой команды также есть настраиваемый параметр строкового типа, содержащий полный путь к WSP-файлу, который обновляется до сайта SharePoint.Данный код в контексте полного примера см. в раздел Пошаговое руководство. Создание пользовательского шага развертывания для проектов SharePoint.
Компиляция кода
Для этого примера требуются ссылки на следующие сборки:
Microsoft.VisualStudio.SharePoint.Commands
Microsoft.SharePoint
Развертывание команды
Для развертывания команды включите ее сборку в один пакет расширения Visual Studio (VSIX) со сборкой развертывания, использующей эту команду.Кроме того следует также добавить в VSIXMANIFEST-файл расширения запись для сборки команды.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.
См. также
Задачи
Практическое руководство. Выполнение команды SharePoint
Пошаговое руководство. Расширение обозревателя сервера, чтобы в нем отображались веб-части