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 |
|
Codebasierte Anpassung |
|
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.