Freigeben über


Ersetzen von Featureempfängern in Sandboxlösungen

Featureempfänger werden in der Regel verwendet, um verschiedene Arten von Konfigurationen oder Einstellungen auf SharePoint-Websites anzuwenden, wenn das Feature aktiviert wird oder wenn die Website erstellt wird (wenn das Feature einer Websitevorlage oder Webvorlage zugeordnet ist). Featureempfänger wurden mithilfe von Sandkastenlösungen in SharePoint Online bereitgestellt. Da codebasierte Anpassungen jedoch nicht mehr verwendet werden können, müssen Sie ein alternatives Design verwenden.

Der Ansatz, den Sie verwenden, um Featureempfänger in SharePoint zu behandeln, unterscheidet sich im SharePoint-Add-In-Modell geringfügig von dem bei voll vertrauenswürdigem Code oder in coded-Sandbox-Lösungen. Sie müssen die Lösung so umgestalten, dass Remote-APIs (CSOM/REST) verwendet werden, um die erforderlichen Konfigurationen auf Ihre Websites anzuwenden.

Hinweis

Codebasierte Sandkastenlösungen sind seit 2014 veraltet, und in SharePoint Online wird diese Funktion Zug um Zug vollständig entfernt. Codebasierte Sandkastenlösungen sind auch in SharePoint 2013 und SharePoint 2016 veraltet.

Optionen zum Ersetzen von Featureempfängern

Ansatz Überlegungen zum Entwurf und weitere Informationen
PowerShell-basierte Anpassung
  • Verwendet PowerShell-Skripts, um neue Websitesammlungen (und möglicherweise Unterwebsites) bereitzustellen, an denen die erforderlichen Anpassungen mithilfe von Remote-APIs angewendet werden. In der Regel erfolgt dies mithilfe von CSOM/REST direkt in den PowerShell-Skripts oder mithilfe von PnP-PowerShell-Befehlen, die eine einfache Möglichkeit zum Remote-Ändern von Websites und Inhalten bieten.
  • Funktioniert gut, wenn Ihr Websitebereitstellungsmodell auf administrativen Aktionen basiert.
  • Erfordert die Ausführung eines Skripts, das die erforderlichen Anpassungen auf erstellte Websites anwendet.
  • Kann mit dem Websiteerstellungsprozess kombiniert werden, wenn es als Administratorvorgang ausgeführt wird.
  • Erfordert keine Hostinginfrastruktur.
  • Es kann nicht automatisch im Rahmen des Erstellungsprozesses der Unterwebsite kombiniert werden.
Codebasierte Anpassung
  • Wendet die erforderlichen Anpassungen mithilfe von verwaltetem Code mit Remote-APIs an. Dies bedeutet, dass Sie sie entweder als Teil des Verwaltungsvorgangs anwenden, wenn die Website erstellt wird, oder Sie wenden sie auf SharePoint an, das in Ihren Code eingebunden wird, um Teil der Ui-Elemente zu sein.
  • Kann eine Hostinginfrastruktur erfordern, wenn sie mit Endbenutzervorgängen kombiniert wird.
  • Kann verwalteten Code verwenden, der mithilfe von CSOM/REST-APIs für die erforderlichen Vorgänge überall ausgeführt wird.
  • Kann verwendet werden, um in SharePoint zu integrieren, indem der Link zur Erstellung von Unterwebsites überschrieben wird.
  • Kann die Bereitstellung von Websitesammlungen und Unterwebsites mithilfe von Remote-APIs automatisieren.

Hinweis

Wenn Sie eine automatische Möglichkeit zum Anwenden von benötigtem Remotecode als Teil der Unterwebsiteerstellungslogik bereitstellen möchten, müssen Sie den Unterwebsitelink mithilfe benutzerdefinierter Aktionen überschreiben. Diese Option ist nur für Websites verfügbar, die das klassische Modell für Bibliotheken und Listen verwenden.

Anwenden von Anpassungen auf Websites

Verwendung von PowerShell

Im Folgenden finden Sie ein einfaches Skript, das PnP PowerShell verwendet, um eine Designfarbdatei von einem Computer in SharePoint Online hochzuladen und die Datei dann auf der SharePoint-Website zu aktivieren.

In diesem Beispiel wird PnP PowerShell verwendet, das mehr als 150 zusätzliche PowerShell-Cmdlets für die Standortkonfiguration und Ressourcenverwaltung bereitstellt.

Connect-SPOnline –Url https://yoursite.sharepoint.com/ –Credentials (Get-Credential)
Add-SPOFile -Path c:\temp\company.spcolor -Folder /_catalogs/theme/15/
Set-SPOTheme -ColorPaletteUrl /_catalogs/theme/15/company.spcolor

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.

Verwenden von Code

Es folgt ein einfaches Codebeispiel, das sharePoint Online CSOM verwendet, um ein benutzerdefiniertes Design zu aktivieren, indem zuerst die Objekte auf eine SharePoint-Website hochgeladen und dann das benutzerdefinierte Design aktiviert wird.

In diesem Beispiel wird die PnP-CSOM-Kernkomponente verwendet, die die nativen out-of-the-box-Vorgänge erweitert, indem ein zusätzlicher Satz von Erweiterungsmethoden für allgemeine Vorgänge eingeführt wird. Sie können ähnliche Vorgänge mit nativem CSOM ausführen, aber der Code wäre deutlich komplexer.


// Upload assets to theme folder.
clientContext.Site.RootWeb.UploadThemeFile(
        HostingEnvironment.MapPath(string.Format("~/{0}", "Resources/Themes/SPC/SPCTheme.spcolor")));
clientContext.Site.RootWeb.UploadThemeFile(
        HostingEnvironment.MapPath(string.Format("~/{0}", "Resources/Themes/SPC/SPCbg.jpg")));

Web web = clientContext.Web;
// Loading RootWeb.ServerRelativeUrl property.
clientContext.Load(clientContext.Site, w => w.RootWeb.ServerRelativeUrl); 
clientContext.ExecuteQuery();
// Let's first upload the contoso theme to host web, if it does not exist there.
web.CreateComposedLookByUrl("Contoso",
                clientContext.Site.RootWeb.ServerRelativeUrl + "/_catalogs/theme/15/SPCTheme.spcolor",
                null,
                clientContext.Site.RootWeb.ServerRelativeUrl + "/_catalogs/theme/15/SPCbg.jpg",
                string.Empty);

// Setting the Contoos theme to host web.
web.SetComposedLookByUrl("Green");

Tipp

Wenn Sie codebasierte Ansätze verwenden, empfehlen wir die Verwendung des PnP-Bereitstellungsmoduls für die Vorlagenverwaltung, was den Entwicklungsaufwand erheblich vereinfacht.

Entfernen einer Sandboxlösung mit Featureempfängercode von Ihrer Website

Wenn Ihre Sandboxlösung Funktionsempfängerlogik für die Deaktivierung von Features enthält und es wichtig ist, dass sie ausgeführt werden, sollten Sie sicherstellen, dass diese Features deaktiviert werden, bevor die codebasierte Unterstützung in SharePoint Online deaktiviert wird.

Sie können Sandkastenlösungen aus SharePoint Online deinstallieren, nachdem die codebasierte Unterstützung deaktiviert wurde, aber Ihr Featureempfängercode würde nicht ausgeführt, obwohl Features von der Website verschoben werden.

Wenn Sie Ihre vorhandene Sandboxlösung von Ihren Websites deaktivieren, werden alle Ressourcen oder Dateien, die mithilfe deklarativer Optionen bereitgestellt werden, nicht entfernt. Die Features in der Sandboxlösung werden jedoch automatisch deaktiviert, und der Ereignisempfänger wird entfernt.

Siehe auch