Compartir a través de


Reemplazo de receptores de características en soluciones de espacio aislado

Los receptores de características se usan normalmente para aplicar diferentes tipos de configuraciones o configuraciones a sitios de SharePoint cuando se activa la característica o cuando se crea el sitio (si la característica está asociada a una plantilla de sitio o una plantilla web). Los receptores de características se han implementado mediante soluciones de espacio aislado en SharePoint Online; sin embargo, dado que ya no se pueden usar personalizaciones basadas en código, debe usar un diseño alternativo.

El enfoque que se usa para controlar los receptores de características en SharePoint es ligeramente diferente en el modelo de complementos de SharePoint que con código de plena confianza o en soluciones de espacio aislado codificado. Debe rediseñar la solución de forma que use las API remotas (CSOM/REST) para aplicar las configuraciones necesarias a los sitios.

Nota:

Las soluciones de espacio aislado basadas en código han quedado en desuso en 2014 y SharePoint online ha iniciado el proceso para quitar esta funcionalidad por completo. Las soluciones de espacio aislado basadas en código también han quedado en desuso en SharePoint 2013 y SharePoint 2016.

Opciones para reemplazar receptores de características

Enfoque Consideraciones de diseño y más información
Personalización basada en PowerShell
  • Usa scripts de PowerShell para aprovisionar nuevas colecciones de sitios (y potencialmente subsitios) donde se aplican las personalizaciones necesarias mediante api remotas. Normalmente, esto se hace mediante CSOM/REST directamente en los scripts de PowerShell o mediante comandos de PowerShell PnP, lo que proporciona una manera sencilla de modificar sitios y contenido de forma remota.
  • Funciona bien si el modelo de aprovisionamiento de sitios se basa en acciones administrativas.
  • Requiere que se ejecute un script que aplique las personalizaciones necesarias a los sitios creados.
  • Se puede combinar con el proceso de creación del sitio, si se realiza como una operación administrativa.
  • No requiere una infraestructura de hospedaje.
  • No se puede combinar automáticamente como parte del proceso de creación del subsitio.
Personalización basada en código
  • Aplica las personalizaciones necesarias mediante código administrado con API remotas. Esto significa que se aplican como parte de la operación administrativa cuando se crea el sitio, o bien se aplican a SharePoint, que enlaza en el código para formar parte de los elementos de la interfaz de usuario.
  • Puede requerir una infraestructura de hospedaje si se combina con operaciones del usuario final.
  • Puede usar código administrado que se ejecuta en cualquier lugar mediante las API de CSOM/REST para las operaciones necesarias.
  • Se puede usar para integrarse en SharePoint reemplazando el vínculo de creación del subsitio.
  • Puede automatizar la recopilación de sitios y el aprovisionamiento de subsitios mediante api remotas.

Nota:

Si desea proporcionar una manera automática de aplicar el código remoto necesario como parte de la lógica de creación del subsitio, debe invalidar el vínculo del subsitio mediante acciones personalizadas del usuario. Esta opción solo está disponible para sitios que usan el modelo clásico para bibliotecas y listas.

Aplicación de personalizaciones a sitios

Con PowerShell

A continuación se muestra un script sencillo que usa PowerShell PnP para cargar un archivo de color de tema desde un equipo en SharePoint Online y, a continuación, activar el archivo en el sitio de SharePoint.

En este ejemplo se usa PowerShell PnP, que proporciona más de 150 cmdlets de PowerShell adicionales destinados a la configuración del sitio y la administración de recursos.

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

Nota:

PnP PowerShell es una solución de código abierto con una comunidad activa que ofrece su soporte. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Uso de código

A continuación se muestra un ejemplo de código simple que usa el CSOM de SharePoint Online para activar un tema personalizado cargando primero los recursos en un sitio de SharePoint y, a continuación, activando el tema personalizado.

En este ejemplo se usa el componente PnP CSOM Core, que amplía las operaciones nativas integradas mediante la introducción de un conjunto adicional de métodos de extensión para operaciones comunes. Puede realizar operaciones similares mediante el uso de CSOM nativo, pero el código sería significativamente más complejo.


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

Sugerencia

Cuando se usan enfoques basados en código, se recomienda usar el motor de aprovisionamiento de PnP para la administración de plantillas, lo que simplifica considerablemente el esfuerzo de desarrollo.

Eliminación de la solución de espacio aislado que contiene el código del receptor de características del sitio

Si la solución de espacio aislado contiene lógica de receptores de características para la desactivación de características y es importante que se ejecuten, debe asegurarse de que estas características se desactivan antes de que se deshabilite la compatibilidad basada en código de SharePoint Online.

Puede desinstalar soluciones de espacio aislado de SharePoint Online después de deshabilitar la compatibilidad basada en código, pero el código del receptor de características no se ejecutaría aunque las características se muevan del sitio.

Al desactivar la solución de espacio aislado existente de los sitios, no se quitan los recursos o archivos implementados mediante opciones declarativas. Sin embargo, las características de la solución de espacio aislado se desactivan automáticamente y se quita el receptor de eventos.

Vea también