Implementar características personalizadas en colecciones de sitios actualizadas en SharePoint Server 2013

SE APLICA A:yes-img-132013 no-img-162016 no-img-192019 no-img-seSubscription Edition no-img-sopSharePoint en Microsoft 365

Este artículo describe cómo implementar características personalizadas mediante paquetes de soluciones en una granja de servidores de SharePoint Server 2013 que ha sido actualizada desde SharePoint Server 2010. Incluye información y procedimientos para los escenarios admitidos. También presenta el enmascaramiento de características.

Cosas que debe saber

Esta sección describe la información sobre requisitos previos que debe conocer antes de comenzar. Incluye lo siguiente:

Quién necesita leer esto y por qué

Este artículo está dirigido a profesionales de TI que deben trabajar con desarrolladores para implementar y mantener características personalizadas basadas en código de plena confianza en varias colecciones de sitios de una granja de servidores de SharePoint Server 2013. Para obtener información sobre cómo puede usar características personalizadas heredadas al actualizar a SharePoint 2013 y qué hacer para ayudar a garantizar que funcionan sin problemas para los usuarios cuando las colecciones de sitios se actualizan desde el modo de compatibilidad, consulte este artículo. Incluye vínculos a otros artículos que proporcionan más información para sus desarrolladores.

Después de actualizar una granja de servidores de SharePoint Server 2010 a SharePoint Server 2013, todas las colecciones de sitios se ejecutan en el modo de compatibilidad de SharePoint 2010. Permanecen en este modo hasta que todas las colecciones de sitios se actualizan al modo de SharePoint 2013. De esta manera, los usuarios pueden utilizar la interfaz de usuario y la funcionalidad de SharePoint Server 2010 con la que estén familiarizados hasta que se actualicen todas las colecciones de sitios. También puede usar las características personalizadas heredadas que quizás haya usado en SharePoint Server 2010. En algún momento es probable que quiera actualizar las colecciones de sitios al modo de SharePoint 2013 para aprovechar las ventajas de las nuevas características y la funcionalidad que proporciona. Cuando haga esta actualización, puede que las características personalizadas que funcionaban en el modo de compatibilidad de SharePoint 2010 ya no funcionen. Tiene que asegurarse de que haya continuidad entre los modos de SharePoint con las mismas características que se están usando. Este artículo describe cómo hacerlo.

Cmdlets de Microsoft PowerShell con los que necesita estar familiarizado

Para los fines de este artículo, debe estar familiarizado con los siguientes cmdlets de Microsoft PowerShell:

Nombre ¿Qué hace? Ejemplo
Add-SPSolution
Agrega la solución al almacén de soluciones de la granja de servidores.
Add-SPSolution -LiteralPath c:\contoso_solution.wsp
Install-SPSolution
Implementa una solución que se ha agregado al almacén de soluciones de la granja de servidores.
Install-SPSolution -Identity contoso_solution.wsp -GACDeployment -CompatibilityLevel 15
Uninstall-SPSolution
Retira una solución implementada.
Uninstall-SPSolution -Identity contoso_solution.wsp
Remove-SPSolution
Quita una solución implementada.
Remove-SPSolution -Identity contoso_solution.wsp

Nota:

Para obtener más información sobre cómo usar PowerShell y los permisos mínimos necesarios para ejecutar un cmdlet de PowerShell para SharePoint, consulte Uso de Windows PowerShell para administrar SharePoint 2013.

Introducción a la implementación de un paquete de solución

Para comprender las secciones siguientes, debe comprender cómo se implementa una característica personalizada en una granja de SharePoint 2013.

Al actualizar de SharePoint Server 2010 a una granja de SharePoint 2013, agregar las características personalizadas es un paso importante.

Figura: Agregar funciones personalizadas en el proceso de actualización

Agregar características personalizadas en fases de actualización

Puede usar un paquete de solución para agregar personalizaciones a la nueva granja de servidores. Un paquete de solución es un paquete de distribución que entrega el trabajo de desarrollo personalizado de SharePoint 2013 a los servidores web o a los servidores de aplicaciones de la granja de servidores. Puede usar las soluciones para empaquetar e implementar características personalizadas, plantillas de sitios, plantillas web, páginas de diseño, elementos web, hojas de estilo en cascada y trabajos del temporizador.

Para implementar un paquete de solución en una granja de SharePoint 2013, debe:

  1. Agregar el paquete de solución a la granja de servidores. Use el cmdlet Add-SPSolution de PowerShell para cargar el paquete de solución de SharePoint en la granja de servidores. Eso agrega la solución al almacén de soluciones de la granja, situado en la base de datos de configuración de la granja de servidores.

  2. Implementar el paquete de solución en la granja de servidores. Use el cmdlet Install-SPSolution de PowerShell para implementar el paquete de solución de SharePoint en la granja de servidores. Esto desempaqueta el paquete de solución y copia todos los archivos que se incluyen con una característica personalizada en un directorio "Feature" ubicado en el servidor web front-end de la granja. Se crea una subcarpeta para cada característica personalizada y se incluye un archivo Feature.xml. Este archivo define las propiedades base de la característica y los elementos enlazados a ella, así como uno o varios archivos de manifiesto de elemento (elements.xml) que definen los elementos que conforman la característica.

Nota:

Para obtener más información sobre cómo implementar un paquete de solución en una granja de SharePoint 2013, vea Instalar y administrar soluciones para SharePoint Server.

El cmdlet Install-SPSolution de PowerShell también incluye un parámetro de nivel de compatibilidad para implementar el paquete de solución en ubicaciones de la carpeta raíz designadas para el modo de SharePoint 2010 o las colecciones de sitios en modo de SharePoint 2013. Estas son las carpetas raíz "14" y "15" (subárbol) y, cuando se implementa la solución, los archivos como características, archivos de diseño, imágenes y plantillas de control se agregan aquí.

Figura: Carpetas raíz de SharePoint 2010 y 2013

Carpetas raíz de SharePoint 2010 y 2013

También debe tener en cuenta que al implementar un paquete de solución en una granja de SharePoint 2013, algunos archivos se copian en ubicaciones específicas independientemente del nivel de compatibilidad. Para obtener más información sobre dónde se copian los archivos, vea Planear la implementación de soluciones de granja de servidores para SharePoint 2013.

Las colecciones de sitios en cualquiera de los modos de la granja de servidores apuntan a su subárbol correspondiente para que puedan usar las características personalizadas que se proporcionan en el paquete de solución.

Figura: Implementar características personalizadas heredadas después de actualizar a SharePoint Server 2013

Implementar características personalizadas heredadas después de la actualización

Es posible que las pruebas indiquen que la característica personalizada funciona correctamente en el modo de SharePoint 2010 y SharePoint 2013. Si es así, los archivos del ensamblado de la característica pueden ser idénticos. Por ejemplo, si se sabe que la característica personalizada Feature1 funciona en los modos de SharePoint 2013 y SharePoint 2010, se puede usar el mismo paquete de solución para implementar la misma característica personalizada (Feature1) en las carpetas "14" y "15".

Sin embargo, si las pruebas demuestran que la característica personalizada heredada podría no funcionar en colecciones de sitios en modo de SharePoint 2013, tendrá que realizar los siguientes cambios:

  • Actualizar el paquete de solución para incluir la lógica condicional que habilita la funcionalidad basada en el modo de colección de sitios de SharePoint.

  • Crear un paquete de solución nuevo e independiente con funcionalidad actualizada para la característica cuando la utilizan colecciones de sitios actualizadas.

El enmascaramiento de características implica usar un paquete de solución nuevo e independiente para la misma característica para los sitios y las colecciones de sitios actualizados (cuando una característica es específica de un sitio o colección de sitios). El enmascaramiento de características permite a las colecciones de sitios buscar y usar automáticamente los ensamblados de característica personalizada correctos. De este modo, los usuarios pueden utilizar la misma característica personalizada sin problemas.

Características heredadas personalizadas en una granja de servidores de SharePoint Server 2013

Cuando se usan características personalizadas heredadas en una granja de SharePoint 2013, es posible que se encuentre en una de las tres situaciones siguientes:

  • La característica personalizada proporcionada por el paquete de solución funciona actualmente para colecciones de sitios en modo de SharePoint 2010. También funciona para colecciones de sitios en modo de SharePoint 2013.

  • La característica personalizada proporcionada por el paquete de solución funciona actualmente para colecciones de sitios en modo de SharePoint 2010. También funciona para colecciones de sitios en modo de SharePoint 2013. También debe tener en cuenta otras funcionalidades de las características personalizadas que quizás quiera ir agregando en el futuro a las colecciones de sitios en modo de SharePoint 2013.

  • La característica personalizada proporcionada por el paquete de solución funciona actualmente para colecciones de sitios en modo de SharePoint 2010. Pero no funciona para colecciones de sitios en modo de SharePoint 2013.

Escenarios admitidos

Al implementar características personalizadas en una granja de SharePoint 2013 que se ha actualizado desde SharePoint Server 2010, se admiten tres escenarios de implementación diferentes:

   
Escenario 1
Solución heredada para el modo de compatibilidad de SharePoint 2010 y se prevé que la funcionalidad siga igual cuando se actualice al modo de SharePoint 2013.
Escenario 2
Solución heredada creada en modo de compatibilidad de SharePoint 2010, pero la solución se vuelve a crear para agregar incrementalmente funcionalidades para el modo de SharePoint 2013.
Escenario 3
Solución heredada para el modo de compatibilidad de SharePoint 2010 y compilar una nueva solución para implementar una nueva funcionalidad para SharePoint 2013.

Nota:

Para obtener más información sobre dónde se instalan los archivos del paquete de solución en la granja de servidores según el nivel de compatibilidad, vea la entrada del blog de TechNet Planear la implementación de soluciones de granja de servidores para SharePoint 2013.

Escenario 1: solución heredada para el modo de compatibilidad de SharePoint 2010 y se prevé que la funcionalidad siga igual cuando se actualice a SharePoint 2013

En este caso, la característica personalizada que se proporciona en el paquete de solución actualmente funciona correctamente en colecciones de sitios en modo de compatibilidad de SharePoint 2010. Además, se espera que funcione cuando la colección de sitios se actualice al modo de SharePoint 2013. Por ejemplo, se creó un elemento web personalizado para SharePoint 2010. Se ha probado que funciona en SharePoint 2013 sin realizar ningún cambio en el código. Sabe que puede agregarlo a la granja de SharePoint 2013 y funciona para los usuarios de colecciones de sitios en el modo de compatibilidad de SharePoint 2010 y al actualizar el sitio a SharePoint 2013.

Como se espera que la característica personalizada funcione en ambos modos de SharePoint, puede usar los mismos ensamblados de característica personalizada. Sin embargo, es importante implementar el paquete de solución para ambos modos de SharePoint y esto se puede hacer con un parámetro del cmdlet Install-SPSolution. El enmascaramiento de características no se usa en este escenario porque las colecciones de sitios en ambos modos usan el mismo código (se duplican los ensamblados de característica situados en las carpetas de los modos 2010 y 2013 correspondientes).

Los pasos de este escenario son los siguientes:

  1. Crear el paquete de solución que contiene la característica personalizada.

  2. Agregar el paquete de solución a la granja de servidores. Puede hacerlo mediante el cmdlet Add-SPSolution de PowerShell. Por ejemplo:

    Add-SPSolution -LiteralPath c:\Solution.wsp

  3. Implementar el paquete de solución.

  4. Implementar el paquete de solución para el modo de compatibilidad de SharePoint 2010. Para ello, use el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 14. Por ejemplo:

    Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 14 -GAC ...

  5. Implementar el paquete de solución para el modo de compatibilidad de SharePoint 2013. Para ello, use el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 15. Por ejemplo:

    Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 15 -GAC ...

Nota:

El parámetro -CompatibilityLevel en el cmdlet Install-SPSolution de Windows PowerShell también ofrece la opción de instalar un paquete de solución en los directorios raíz 14 y 15 a la vez. Para hacerlo, use los valores "14,15" o "Todo". Por ejemplo: >Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 14, 15 -GAC ...> para obtener más información sobre el parámetro CompatibilityLevel en el cmdlet Install-SPSolution Windows PowerShell, vea Install-SPSolution .

La característica personalizada heredada funciona en ambos modos

Nota:

Cuando use el comando Install-SPSolution para realizar la instalación para ambos modos de SharePoint, use el mismo nombre e identificador de solución.

Escenario 2: solución heredada creada en modo de compatibilidad de SharePoint 2010, pero la solución se vuelve a crear para agregar incrementalmente funcionalidades para SharePoint 2013

En este escenario, la característica personalizada funciona correctamente en SharePoint Server 2010. Quiere compilar un paquete de solución agregando esta característica a una granja de SharePoint 2013, pero también quiere asegurarse de que puede agregar funcionalidad incrementalmente para las colecciones de sitios en el modo de SharePoint 2013 que usan este paquete de solución. Por ejemplo, se creó un elemento web personalizado para SharePoint 2010. Se ha probado que funciona en SharePoint 2013 sin realizar ningún cambio en el código. Sin embargo, sabe que es posible que quiera agregar funcionalidad adicional para los usuarios de SharePoint 2013, pero todavía desea usar los mismos ensamblados de características para permitir la compatibilidad con versiones anteriores.

Como se espera que la característica personalizada funcione en ambos modos de SharePoint, puede usar los mismos ensamblados de característica personalizada. Debe instalar el paquete de solución para ambos modos de SharePoint igual que hizo en el escenario anterior. La principal diferencia en este escenario es que el paquete de solución debe incluir una lógica que habilite la funcionalidad de la característica que se base condicionalmente en la compatibilidad de la colección de sitios.

Por ejemplo, supongamos que tiene un método denominado Sample() implementado en una característica personalizada diseñada para SharePoint 2010. Si desea cambiar su implementación en el modo de SharePoint 2013, el código debe incluir lógica condicional que use la propiedad SPSite.CompatibilityLevel:

void Sample()
{
if (site.CompatibilityLevel == 14) { /*Existing O14 implementation*/}
else {/*New O15 implementation*/}}
}

Al hacerlo, el mismo ensamblado de características sirve tanto para las versiones de SharePoint 2010 como de SharePoint 2013 de la característica. El enmascaramiento de características no se usa en este escenario porque no solo usa el mismo ensamblado de características, sino también el mismo paquete de solución. Los mismos archivos de la característica personalizada se copian en los directorios "14" y "15" \Template\Features. Para obtener más información, vea la sección "Consideraciones de planeación" de la entrada de blog de TechNet Planeamiento de la implementación de soluciones de granja de servidores para SharePoint 2013.

Los pasos de este escenario son los siguientes:

  1. Crear el paquete de solución que contiene la característica personalizada. Incluya la lógica condicional que habilita la funcionalidad de la característica que se basa en la compatibilidad de la colección de sitios.

  2. Agregar el paquete de solución a la granja de servidores. Para ello, use el cmdlet Add-SPSolution de PowerShell. Por ejemplo:

    Add-SPSolution -LiteralPath c:\Solution.wsp

  3. Implementar el paquete de solución.

  4. Implementar el paquete de solución para el modo de compatibilidad de SharePoint 2010. Para ello, use el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 14. Por ejemplo:

    Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 14 -GAC ...

  5. Instale el paquete de solución para la compatibilidad con SharePoint 2013. Para ello, use el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 15. Por ejemplo:

    Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 15 -GAC ...

Nota:

El parámetro CompatibilityLevel en el cmdlet Install-SPSolution de Microsoft PowerShell también ofrece la opción de instalar un paquete de solución en los directorios raíz 14 y 15 a la vez. Para hacerlo, use los valores "14,15" o "Todo". Por ejemplo: >Install-SPSolution -Identity Solution.wsp -CompatibilityLevel 14, 15 -GAC ...> para obtener más información sobre el parámetro -CompatibilityLevel en el cmdlet de Microsoft PowerShell Install-SPSolution , vea Install-SPSolution .

La característica personalizada heredada necesita lógica condicional

Nota:

Cuando use el comando Install-SPSolution para realizar la instalación para ambos modos de SharePoint, use el mismo nombre e identificador de solución.

Escenario 3: solución heredada para el modo de compatibilidad de SharePoint 2010, y se crea una nueva solución para implementar nuevas funcionalidades para SharePoint Server 2013

En este escenario, se sabe que la característica personalizada funciona correctamente en SharePoint Server 2010, pero se sabe que no funciona en SharePoint 2013. Debe crear un paquete de solución nuevo e independiente en el que se haya corregido la funcionalidad de la característica personalizada para que funcione correctamente en SharePoint 2013. En este escenario, tiene dos paquetes de solución diferentes con ensamblados de característica diferentes. Aquí se usa el enmascaramiento de características. A medida que los usuarios se mueven del modo de compatibilidad a SharePoint 2013, se "enmascaran" a partir del hecho de que la característica personalizada que usan se ha movido de una base de código diferente a otra.

En este escenario, necesitará agregar e implementar dos paquetes de solución independientes que contienen dos ensamblados de característica diferentes. Ambas versiones de la característica deben tener el mismo nombre, identificador de característica y ubicación del manifiesto de la característica, incluso aunque los recursos y los ensamblados de característica sean diferentes.

Requisitos del enmascaramiento de características

Requisito Igual o diferente Paquete de solución: ejemplo de modo 2010 Paquete de solución: ejemplo de modo 2013
Nombres de los paquetes de solución
Diferente
POC14
POC15
Identificadores de los paquetes de solución
Diferente
000000-0000-0000-0000-000000000000
11111111-1111-1111-1111-111111111111
Nombre de la característica
Igual
Característica 1
Característica 1
Identificador de la característica
Igual
12345
12345
Nombres de carpeta XML de característica
Igual
POC15\Features\Feature1.feature\
POC15\Features\Feature1.feature\
Ubicación del manifiesto de característica
Igual
POC15_Feature1\Feature1.Template.xml
POC15_Feature1\Feature1.Template.xml

Figura: Paquetes de solución para enmascaramiento de características

Paquetes de solución para enmascaramiento de características

Los pasos de este escenario son los siguientes:

  1. Crear dos paquetes de solución diferentes con nombres diferentes. Las versiones de la característica que va a implementar deben tener el mismo nombre y identificador de característica.

  2. Agregar el paquete de solución para el modo de SharePoint 2010 a la granja de servidores. Puede hacerlo mediante el cmdlet Add-SPSolution de PowerShell. Por ejemplo:

    Add-SPSolution -LiteralPath c:\POC14.wsp

  3. Agregue el paquete de solución para la compatibilidad de SharePoint 2013 a la granja de servidores. También puede hacerlo mediante el cmdlet Add-SPSolution de PowerShell. Por ejemplo:

    Add-SPSolution -LiteralPath c:\POC15.wsp

  4. Implementar el paquete de solución para el modo de compatibilidad de SharePoint 2010. Puede hacerlo mediante el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 14. Por ejemplo:

    Install-SPSolution -Identity POC14.wsp -CompatibilityLevel 14 -GAC ...

  5. Instale el paquete de solución para la compatibilidad con SharePoint 2013. También puede hacerlo mediante el cmdlet Install-SPSolution de PowerShell. Asegúrese de establecer el parámetro -CompatibilityLevel en 15. Por ejemplo:

    Install-SPSolution -Identity POC15.wsp -CompatibilityLevel 15 -GAC ...

Enmascaramiento de características para implementar una característica personalizada

Desinstalar un paquete de solución

Después de actualizar todas las colecciones de sitios al modo de SharePoint 2013, ya no necesitará el paquete de solución heredada que implementó para las colecciones de sitios del modo de compatibilidad de SharePoint 2010. Cuando esto ocurra, puede retirar el paquete de solución heredada y quitarlo de la granja de SharePoint Server 2013. Para hacerlo, use los cmdlets Uninstall-SPSolution y Remove-SPSolution de PowerShell.

Importante

Le recomendamos usar el cmdlet Uninstall-SPSolution de PowerShell para retirar una solución de una granja de servidores de SharePoint Server 2013. Al retirar una solución mediante Administración central, se retira de las carpetas raíz tanto de SharePoint 2010 como de SharePoint 2013 de forma predeterminada. Esto es especialmente importante cuando se usa el enmascaramiento de características para implementar una característica personalizada.

Para retirar el paquete de solución y quitarlo:

  1. Retrae el paquete de solución de modo de SharePoint 2010 de la granja de servidores: puede hacerlo mediante el cmdlet Uninstall-SPSolution Windows PowerShell. Por ejemplo:

    Uninstall-SPSolution -Identity POC14.wsp -CompatibilityLevel 14

    Importante

    Asegúrese de usar el parámetro CompatibilityLevel en " 14 " para retirar el paquete de solución solo para el modo de compatibilidad 2010. Por ejemplo: Uninstall-SPSolution POC14.wsp -CompatibilityLevel 14

  2. Quitar el paquete de solución del almacén de soluciones de la granja de servidores: puede hacerlo mediante el cmdlet Remove-SPSolution de PowerShell. Por ejemplo:

    Remove-SPSolution -Identity POC14.wsp

Retirar y quitar el paquete de solución

Otras consideraciones

Esta sección incluye información sobre consideraciones adicionales, incluidas los siguientes:

  • Implementar una característica en colecciones de sitios que usan el modo mixto

  • Consideraciones acerca de la página maestra

Implementar una característica en colecciones de sitios que usan el modo mixto

Si la característica personalizada tiene ámbito de granja de servidores o aplicación web, puede implementarla aunque no todas las colecciones de sitios de la granja o aplicación web se hayan actualizado al modo de compatibilidad de SharePoint 2013.

En el caso de las características con ámbito de aplicación web, si no se ha actualizado la colección de sitios raíz, no podrá activar la característica mediante el cmdlet Install-SPSolution de PowerShell. En su lugar, debe usar el sitio de Administración central de SharePoint para activar la característica.

Consideraciones acerca de la página maestra

Con respecto a las personalizaciones de personalización de marca, las páginas maestras personalizadas se restablecen de forma predeterminada a seattle.master después de una actualización de la colección de sitios en SharePoint 2013. Si usa el escenario de enmascaramiento de características, debe restablecer las páginas maestras personalizadas que haya creado para colecciones de sitios de SharePoint 2013. Para obtener más información sobre cómo hacerlo, consulte el artículo de MSDN Uso de la actualización de características para aplicar nuevas páginas maestras de SharePoint Server 2013 al actualizar desde SharePoint 2010.

Nota:

Para obtener más información sobre las consideraciones de personalización de marca que debe realizar al actualizar colecciones de sitios en SharePoint 2013, vea Problemas de personalización de marca que pueden producirse al actualizar a SharePoint 2013.

Consulte también

Otros recursos

Crear un plan de personalizaciones actuales durante la actualización a SharePoint 2013

Paquete de soluciones de SharePoint 2013 y SharePoint en Microsoft 365 para personalización de marca y aprovisionamiento de sitios

Problemas de personalización de marca que pueden surgir al actualizar a SharePoint 2013