PnP-Bereitstellungsmodul und die Kernbibliothek

Das PnP-Bereitstellungsmodul ist das Herzstück des Frameworks für die Bereitstellung und beruht auf der Bibliothek OfficeDevPnP.Core. Das PnP-Bereitstellungsmodul ist Teil der Core-Bibliothek und nutzt die Erweiterungen der Core-Bibliothek bei der Implementierung von Bereitstellungsaufgaben.

Hinweis

Das PnP-Bereitstellungsframework & PnP-Bereitstellungsmodul sind Open-Source-Lösungen mit aktiver Community, die unterstützung dafür bereitstellt. Es gibt keine SLA für den Support des Open-Source-Tools durch Microsoft.

Die Core-Bibliothek besteht aus Erweiterungsmethoden für das SharePoint CSOM/REST-Objektmodell und ermöglicht Bereitstellungsaufgaben wie das Auflisten und Abrufen von Bereitstellungsvorlagen ebenso wie das Speichern und Anwenden von Vorlagen auf neue und vorhandene Websites. Außerdem ermöglicht sie das Automatisieren von Bereitstellungsaufgaben und die Einführung von codierter Logik in Ihre Bereitstellungsroutinen.

Hinweis

Ein Video zum Erstellen, Speichern und Anwenden einer Bereitstellungsvorlage finden Sie unter Erste Schritte mit dem PnP-Bereitstellungsmodul.

PnP-Bereitstellungsmodul

Das PnP-Bereitstellungsmodul ist die strukturierte Implementierung von Klassen in der Core-Bibliothek zum Ausführen und Automatisieren von Remotebereitstellungsaufgaben. In der neuen Microsoft-Landschaft, in deren Zentrum das SharePoint-Add-In-Modell steht, verwenden Bereitstellungslösungen für SharePoint Online, SharePoint und Office 365 jetzt das clientseitige Objektmodell (CSOM) und das Bereitstellungsframework zur Bereitstellung von Websiteartefakten.

Mit dem PnP-Bereitstellungsmodul können Sie den Entwurf von Websitespalten, Inhaltstypen, Listendefinitionen, durchkomponierten Looks und Seiten modellieren. Sie können diese Features und mehr entwerfen, indem Sie auf vorhandene Websitedesignfeatures zeigen, den Entwurf von Hand erstellen oder eine Kombination aus beidem verwenden. Anschließend können Sie optional das Design als Bereitstellungsvorlage beibehalten, die Sie speichern und wiederverwenden können.

Sie können einen von zwei Ansätzen verwenden, um den Entwurf der Website als Bereitstellungsvorlage zu extrahieren. Verwenden Sie Windows PowerShell-Skripts (PnP.PowerShell), oder verwenden Sie CSOM/REST-Code, der von der Core-Bibliothek (OfficeDevPnP.Core) bereitgestellte Erweiterungsmethoden implementiert.

Verwenden von Windows PowerShell-Skripts zum Extrahieren einer Bereitstellungsvorlage

Für die Verwendung von Windows PowerShell-Skripts mit dem Bereitstellungsmodul müssen Sie zunächst die PnP-PowerShell-Cmdlets herunterladen und installieren. Alles, was Sie zum Ausführen von Windows PowerShell benötigen, einschließlich Download- und Installationsanweisungen sowie der Dokumentation der Windows PowerShell-Befehle, ist im Repository PnP PowerShell-Befehle auf GitHub verfügbar.

Hinweis

Das PnP PowerShell Commands-Repository beinhaltet vier Versionen: eine für SharePoint 2013, eine für SharePoint 2016, eine für SharePoint 2019 und eine für SharePoint Online.

Hinweis

PnP PowerShell ist eine Open Source-Lösung mit aktiver Community, die Support dafür bietet. Es gibt keine SLA für den Support des Open-Source-Tools durch Microsoft.

Es wird empfohlen, das Cmdlet mithilfe der PowerShell-Galerie zu installieren:

Install-Module -Name PnP.PowerShell

Falls Sie eine lokale Version von SharePoint installieren möchten, so tauschen Sie den Begriff „Online“ im Namen mit der jeweiligen Version von SharePoint aus.

Hier sind die Links zu den aktuellsten Versionen:

Verwenden von CSOM-Code zum Extrahieren einer Bereitstellungsvorlage

Um CSOM/REST-Code zum Extrahieren einer Bereitstellungsvorlage einzusetzen, erstellen Sie einfach ein Entwicklungsprojekt mithilfe von Visual Studio oder einer anderen Entwicklungsumgebung. Erstellen Sie einen beliebigen Projekttyp, z. B. eine Konsole oder Windows-Anwendung oder ein SharePoint-Add-In. Nachdem Sie ein Entwicklungsprojekt erstellt haben, müssen Sie die Core-Bibliothek installieren, die als NuGet-Paket verfügbar ist.

Hinweis

Eine Anleitung zum Suchen und Installieren des NuGet-Pakets für die Core-Bibliothek und eine exemplarische Vorgehensweise für eine Beispielkonsolenanwendung zur Remotebereitstellung sind unter Beispiel für die Bereitstellung einer Konsolenanwendung verfügbar. Beachten Sie, dass die Core-Bibliothek in zwei Versionen erhältlich ist: eine zielt ab auf SharePoint Online und die andere auf lokales SharePoint.

Ausführliche Informationen zur Verwendung von CSOM finden Sie im Beispiel für die Bereitstellung einer Konsolenanwendung. Eine allgemeine Übersicht lautet wie folgt:

  1. Herstellen einer Verbindung zu SharePoint Online.

  2. Erstellen Sie eine ClientContext-Instanz, und rufen Sie einen Verweis auf ein Web-Objekt ab.

  3. Verwenden Sie die Erweiterungsmethode GetProvisioningTemplate der Core-Bibliothek, um ein ProvisioningTemplate-Objekt zu extrahieren.

  4. Speichern Sie die Instanz der Bereitstellungsvorlage mithilfe eines Vorlagenanbieters und einer Serialisierungsformatierung an einem Speicherort Ihrer Wahl.

Hinweis

Da die Objekte des Vorlagenanbieters und der Serialisierungsformatierung angepasst werden können, können Sie ein beliebiges Format für einen Dauerhaftigkeitsspeicher und für Serialisierung implementieren. Out-of-the-Box bietet das PnP-Bereitstellungsmodul Unterstützung für die Vorlagenanbieter Dateisystem, SharePoint und Azure Blob-Speicher. Darüber hinaus unterstützt es die Serialisierungsformatierungen XML und JSON.

Ein Beispiel für die Ausgabe der XML-Serialisierung und weitere Informationen zum XML-Serialisierungsschema finden Sie im Artikel PnP-Bereitstellungsschema. Sie erhalten das Schema und die zugehörige Dokumentation auch auf GitHub: SharePoint/PnP-Bereitstellungsschema. Das Channel 9-Video Deep dive into PnP provisioning engine schema bietet eine Einführung und Erläuterung des Schemas.

Es ist jedoch zu beachten, dass das Bereitstellungsmodul ein vom Serialisierungsformat unabhängiges Domänenmodell unterstützt. Tatsächlich ist das Bereitstellungsmodul vollständig von jedem Serialisierungsformat abgekoppelt. Es bleibt Ihnen überlassen, die ProvisioningTemplate-Instanz manuell zu definieren.

Verweisen Sie entweder auf eine Modellwebsite, oder verfassen Sie ein XML-Dokument, das anhand des PnP-Bereitstellungsschemas überprüft wird, oder schreiben Sie .NET-Code und erstellen Sie die Hierarchie der Objekte. Sie können diese Ansätze auch kombinieren. Sie können die Bereitstellungsvorlage auch mithilfe einer Modellwebsite entwerfen, diese in einer XML-Datei speichern und einige In-Memory-Anpassungen vornehmen, während die ProvisioningTemplate-Instanz in Ihrem Code verarbeitet wird.

Beispielcode zum Extrahieren einer Vorlage mit GetProvisioningTemplate

Das Beispiel für die Bereitstellung einer Konsolenanwendung veranschaulicht die Verwendung der GetProvisioningTemplate-Methode. In dem Beispiel findet das Exportieren der Bereitstellungsvorlage im folgenden Codeblock statt.

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);

Anwenden der Bereitstellungsvorlage

Wenn Sie die Bereitstellungsvorlage mit Erweiterungsmethoden der Core-Bibliothek anwenden, haben Sie einen Codeblock ähnlich dem Beispiel. Im Beispiel wird die Vorlage mithilfe der ApplyProvisioningTemplate-Erweiterungsmethode des Web-Typs auf die Zielwebsite angewendet.

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-Core-Bibliothek

Die Core-Bibliothek (OfficeDevPnP.Core) ist ein CSOM/REST-Objektmodell, welches das PnP-Bereitstellungsframework unterstützt und das PnP-Bereitstellungsmodul ermöglicht. Sie besteht aus mehreren Namespaces, einschließlich einer Reihe von Erweiterungsmethoden. Diese Methoden erweitern das SharePoint-Objektmodell, um die Remotebereitstellung zu unterstützen, sowie Objekte für die Behandlung von Entitäten, Zeitgeberaufträgen, Bereitstellungsvorlagen und der Gesamtheit des Bereitstellungsframeworks. Tabelle 1 enthält Namespaces der Core-Bibliothek.


Tabelle 1. Namespaces in der OfficeDevPnP.Core-Bibliothek

Namespace Beschreibung
OfficeDevPnP.Core
OfficeDevPnP.Core.AppModelExtensions .NET-Klassen, die einen vorhandenen Typ mit zusätzlichen Methoden erweitern.
OfficeDevPnP.Core.Entities Klassen zum Bereitstellen und Abrufen komplexerer Objekte aus den Erweiterungsmethoden in AppModelExtensions.
OfficeDevPnP.Core.Enums Eine Reihe von Enumerationen, die Bereitstellungsvorgänge unterstützen.
OfficeDevPnP.Core.Extensions Erweiterungsmethoden, die nicht mit SharePoint verbunden sind, z. B. Methoden für die Bearbeitung von Zeichenfolgen.
OfficeDevPnP.Core.Framework.ObjectHandlers.TokenDefinitions Token, das verwendet wird, um im Vorlagenobjekt websitespezifischen Inhalt zu ersetzen.
OfficeDevPnP.Core.Framework.Provisioning.Connectors Connectors werden verwendet, um verschiedene Datenquellen zu verbinden, in denen Vorlagen und Objekte gespeichert werden.
OfficeDevPnP.Core.Framework.Provisioning.Extensibility Code für den Erweiterbarkeitsanbieter. Erweiterbarkeitsanbieter können verwendet werden, um Funktionen hinzuzufügen, die nicht systemintern vom Modul unterstützt werden.
OfficeDevPnP.Core.Framework.Provisioning.Model Vorlagendatenmodell-Objekte. Vorlagen werden entweder extrahiert oder zu tatsächlichem C#-Code deserialisiert. Dieser Namespace enthält Klassen für diese Struktur.
OfficeDevPnP.Core.Framework.Provisioning.ObjectHandlers Handler für verschiedene SharePoint-Elemente, die sowohl Vorlagenextraktion als auch -erstellung unterstützen.
OfficeDevPnP.Core.Framework.Provisioning.Providers Namespace für Vorlagenanbieterbasis. Vorlagenanbieter werden verwendet, um codebasierte Modelle in ein bestimmtes Format zu serialisieren oder zu deserialisieren.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Json JSON-Vorlagenanbieter für Serialisierung oder Deserialisierung codebasierter Vorlagen in das oder aus dem JSON-Format.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml XML-Vorlagenanbieter für Serialisierung oder Deserialisierung codebasierter Vorlagen in das oder aus dem XML-Format.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201503 Automatisch generierte Schemadateien für Version v201503 des Schemas.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201505 Automatisch generierte Schemadateien für Version v201505 des Schemas.
OfficeDevPnP.Core.Framework.Provisioning.Providers.Xml.V201508 Automatisch generierte Schemadateien für Version v201508 des Schemas.

Siehe auch