Поделиться через


Модуль подготовки PnP и основная библиотека

Модуль подготовки PnP — это ядро платформы подготовки, основанное на библиотеке OfficeDevPnP.Core. Модуль подготовки является частью основной библиотеки и использует ее расширения при выполнении задач подготовки.

Примечание.

Платформа подготовки PnP & подсистема подготовки PnP — это решения с открытым кодом, в которых активное сообщество предоставляет поддержку. SLA для поддержки инструмента с открытым исходным кодом со стороны Майкрософт отсутствует.

Основная библиотека, включающая методы расширения на объектной модели CSOM/REST SharePoint, поддерживает задачи подготовки, такие как перечисление и получение шаблонов подготовки, а также хранение и применение шаблонов к новым и существующим сайтам. Кроме того, она позволяет автоматизировать задачи подготовки и вводить кодированную логику в процедуры подготовки.

Примечание.

Обучающее видео по созданию, сохранению и применению шаблона подготовки см. в блоге Начало работы с модулем подготовки PnP.

Модуль подготовки PnP

Модуль подготовки PnP — это структурированная реализация классов в основной библиотеке для выполнения и автоматизации удаленных задач подготовки. В новом пространстве Майкрософт, использующем модель надстроек SharePoint, решения подготовки для SharePoint Online, SharePoint и Office 365, теперь применяется клиентская объектная модель (CSOM) и платформа подготовки для подготовки артефактов сайта.

Модуль подготовки PnP позволяет моделировать структуру столбцов сайта, типы контента, определения списков, составные макеты и страницы. Вы можете создавать эти и многие другие возможности, указывая на существующие функции макета сайта, создавая макет вручную или используя сочетание обоих способов. После этого можно сохранить макет в виде шаблона подготовки, который доступен для повторного использования.

Можно использовать один из двух способов для извлечения макета сайта в качестве шаблона подготовки. Используйте сценарии Windows PowerShell (PnP.PowerShell) или код CSOM/REST, реализующий методы расширения, которые предусмотрены в основной библиотеке (OfficeDevPnP.Core).

Извлечение шаблона подготовки с помощью сценариев Windows PowerShell

Чтобы использовать сценарии Windows PowerShell с модулем подготовки, сначала необходимо скачать и установить командлеты PnP PowerShell. Все необходимое для запуска Windows PowerShell, включая инструкции по скачиванию и установке, а также документация по командам Windows PowerShell, доступно в репозитории команд PnP PowerShell на сайте GitHub.

Примечание.

Репозиторий команд PnP PowerShell содержит четыре версии: для SharePoint 2013, для SharePoint 2016, для SharePoint 2019 и для SharePoint Online.

Примечание.

PnP PowerShell — это решение с открытым исходным кодом, поддержка которого предоставляется активным сообществом. Для инструментов с открытым исходным кодом не существует соглашения об уровне обслуживания в отношении поддержки корпорацией Майкрософт.

Устанавливать командлет рекомендуется с помощью коллекции PowerShell:

Install-Module -Name PnP.PowerShell

Если вы хотите установить версию для локальной службы SharePoint, замените Online именем соответствующей версии SharePoint.

Ниже представлены ссылки на последние версии.

Извлечение шаблона подготовки с помощью кода CSOM

Чтобы использовать код CSOM/REST для извлечения шаблона подготовки, просто создайте проект разработки с помощью Visual Studio или другой среды разработки. Создайте проект любого типа, например консоль или приложение Windows или надстройку SharePoint. После создания проекта разработки необходимо установить основную библиотеку, доступную в виде пакета NuGet.

Примечание.

Инструкции по поиску и установке пакета NuGet основной библиотеки, а также пошаговое руководство для удаленной подготовки примера консольного приложения доступны в статье Пример подготовки консольного приложения. Обратите внимание, что основная библиотека доступна в двух версиях: одна предназначена для SharePoint Online, а другая — для локальной службы SharePoint.

Подробные инструкции по использованию CSOM доступны в примере подготовки консольного приложения, а ниже представлены общие сведения:

  1. Создание подключения к SharePoint Online

  2. Создайте экземпляр ClientContext и извлеките ссылку на объект Web.

  3. Используйте метод расширения основной библиотеки GetProvisioningTemplate, чтобы извлечь объект ProvisioningTemplate.

  4. Сохраните экземпляр шаблона подготовки в выбранном расположении с помощью поставщика шаблона и форматирования сериализации.

Примечание.

Так как объекты поставщика шаблона и форматирования сериализации можно настраивать, вы можете применить любое нужное хранилище и формат сериализации. Стандартный модуль подготовки PnP предоставляет поддержку для поставщиков шаблонов файловой системы, SharePoint и хранилища BLOB-объектов Azure. Он также поддерживает форматирование сериализации XML и JSON.

Пример выходных данных сериализации XML и дополнительные сведения о схеме сериализации XML представлены в статье Схема подготовки PnP. Схему и ее документацию также можно получить на сайте GitHub: SharePoint/PnP-Provisioning-Schema. Схема рассматривается и обсуждается в видео Channel 9 Подробное изучение схемы модуля подготовки PnP.

Однако важно отметить, что модуль подготовки поддерживает модель домена, независимую от формата сериализации. На самом деле модуль подготовки полностью отделен от формата сериализации. Вы сами вручную определяете экземпляр ProvisioningTemplate.

Укажите модельный сайт или создайте XML-документ, выполняющий проверку на соответствие схеме подготовки PnP, или напишите код .NET и создайте иерархию объектов. Вы даже можете сочетать эти способы. Также можно разработать шаблон подготовки с помощью модельного сайта и сохранить его в XML-файле, а затем выполнить некоторые настройки в памяти при обработке экземпляра ProvisioningTemplate в коде.

Пример кода для извлечения шаблона с помощью метода GetProvisioningTemplate

Пример подготовки консольного приложения демонстрирует использование метода GetProvisioningTemplate. В примере процесс экспорта шаблона подготовки выполняется в следующем блоке кода.

ProvisioningTemplateCreationInformation ptci = new ProvisioningTemplateCreationInformation(ctx.Web);

// Create FileSystemConnector, so that we can store composed files somewhere temporarily 
ptci.FileConnector = new FileSystemConnector(@"c:\temp\pnpprovisioningdemo", "");
ptci.PersistComposedLookFiles = true;
ptci.ProgressDelegate = delegate (String message, Int32 progress, Int32 total)
{

// Use this to simply output progress to the console application UI
Console.WriteLine("{0:00}/{1:00} - {2}", progress, total, message);
};

// Execute actual extraction of the tepmplate
ProvisioningTemplate template = ctx.Web.GetProvisioningTemplate(ptci);

Применение шаблона подготовки

Если шаблон подготовки применяется с помощью методов расширения основной библиотеки, используется блок кода, схожий с примером в этой статье. В приведенном примере шаблон применяется к конечному сайту с помощью метода расширения ApplyProvisioningTemplate типа Web.

using (var context = new ClientContext(destinationUrl))
{
  context.Credentials = new SharePointOnlineCredentials(userName, password);
  Web web = context.Web;
  context.Load(web, w => w.Title);
  context.ExecuteQueryRetry();

  // Configure the XML file system provider
  XMLTemplateProvider provider =
  new XMLFileSystemTemplateProvider(
    String.Format(@"{0}\..\..\",
    AppDomain.CurrentDomain.BaseDirectory),
    "");

  // Load the template from the XML stored copy
  ProvisioningTemplate template = provider.GetTemplate(
    "<template name>.xml");

  // Apply the template to another site
  Console.WriteLine("Start: {0:hh.mm.ss}", DateTime.Now);

  // We can also use Apply-PnPProvisioningTemplate
  web.ApplyProvisioningTemplate(template);

  Console.WriteLine("End: {0:hh.mm.ss}", DateTime.Now);
}

Основная библиотека PnP

Основная библиотека (OfficeDevPnP.Core) — это объектная модель CSOM/REST, поддерживающая платформу подготовки PnP и модуль подготовки PnP. Она содержит несколько пространств имен, включая набор методов расширения. Эти методы расширяют объектную модель SharePoint для поддержки удаленной подготовки, а также объектов для обработки сущностей, заданий таймера, шаблонов подготовки и всей платформы подготовки. В таблице 1 перечислены пространства имен в основной библиотеке.


Таблица 1. Пространства имен в библиотеке OfficeDevPnP.Core

Пространство имен Описание
OfficeDevPnP.Core
OfficeDevPnP.Core.AppModelExtensions Классы .NET, расширяющие существующий тип дополнительными методами.
OfficeDevPnP.Core.Entities Классы, используемые для предоставления и получения более сложных объектов из методов расширения в AppModelExtensions.
OfficeDevPnP.Core.Enums Набор перечислений, поддерживающих операции подготовки.
OfficeDevPnP.Core.Extensions Методы расширения, не связанные с SharePoint, например методы для действий со строками.
OfficeDevPnP.Core.Framework.ObjectHandlers.TokenDefinitions Маркеры, используемые для замены связанного с сайтом содержимого в объекте шаблона.
OfficeDevPnP.Core.Framework.Provisioning.Connectors Соединители, используемые для подключения различных источников данных, где хранятся шаблоны и ресурсы.
OfficeDevPnP.Core.Framework.Provisioning.Extensibility Код поставщика расширения. Поставщиков расширения можно использовать для добавления функций, которые изначально не поддерживаются модулем.
OfficeDevPnP.Core.Framework.Provisioning.Model Объекты модели данных шаблона. Шаблоны либо извлекаются, либо десериализуются до фактического кода C#. Это пространство имен содержит классы для структуры.
OfficeDevPnP.Core.Framework.Provisioning.ObjectHandlers Обработчики для разных элементов SharePoint, поддерживающие как извлечение, так и создание.
OfficeDevPnP.Core.Framework.Provisioning.Providers Пространство имен для основы поставщика шаблона. Поставщики шаблонов используются для сериализации или десериализации моделей на основе кода до определенного формата.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Json Поставщик шаблона JSON для сериализации или десериализации шаблонов на основе кода до формата JSON или из него.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml Поставщик шаблона XML для сериализации или десериализации шаблонов на основе кода до формата XML или из него.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201503 Автоматически созданные файлы схемы для версии схемы 201503.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201505 Автоматически созданные файлы схемы для версии схемы 201505.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201508 Автоматически созданные файлы схемы для версии схемы 201508.

См. также