Compartir a través de


Cambios en Feature.xml

Última modificación: lunes, 12 de julio de 2010

Hace referencia a: SharePoint Foundation 2010

La nueva sección <UpgradeActions> de un archivo Feature.xml especifica las acciones de actualización que se pueden aplicar a una característica especificada.

Puede colocar la sección <UpgradeActions> al principio o al final del archivo Feature.xml, dentro del contenido del elemento <Feature>. En esta sección puede especificar acciones de actualización para diferentes intervalos de actualización e incluir una lista de acciones de actualización que se apliquen a un intervalo especificado. Las definiciones de actualización siempre actualizan una característica a la versión que se declara en el elemento <Feature>.

El siguiente código muestra una sección <UpgradeActions> de ejemplo que se puede definir en un archivo Feature.xml.

<UpgradeActions 
  ReceiverAssembly="MyFeatureReceiver, 
  Version=1.0.0.0, 
  Culture=neutral, 
  PublicKeyToken=2f2197d99d6e2871" 
  ReceiverClass="FeatureReceiver.TestFeatureReceiver">
  <CustomUpgradeAction 
    Name="DeleteField">
    <Parameters>
      <Parameter 
        Name="FieldName">Address3
      </Parameter>
    </Parameters>
  </CustomUpgradeAction>
  <VersionRange 
    BeginVersion="2.0.0.0" 
    EndVersion="5.0.0.0">
      <!-- Here you specify other upgrade actions to apply to Feature instances whose versions are within the range 2.0.0.0 to 5.0.0.0 -->
  </VersionRange>
</UpgradeActions>

La sección <UpgradeActions> indica cómo actualizar una instancia de característica. Los escenarios comunes de actualización se pueden lograr de manera declarativa modificando simplemente el archivo Feature.xml, mientras que los escenarios más avanzados pueden requerir la implementación del método FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) para poder usar una lógica de actualización de característica personalizada. Para obtener información acerca de elementos declarativos, vea "Ámbito y aprovisionamiento de manifiestos de elemento".

El elemento <UpgradeActions> puede contener los siguientes subelementos:

  • <CustomUpgradeAction>: permite ejecutar código personalizado cuando una instancia de característica se está actualizando. Cuando se especifica una acción en una secuencia de acciones de actualización, Microsoft SharePoint Foundation llama al método FeatureUpgrading(SPFeatureReceiverProperties, String, IDictionary<String, String>) sincrónicamente con otras acciones de actualización, por orden de declaración.

  • <VersionRange>: especifica un intervalo de versiones al que se aplican determinadas acciones de actualización.

  • <ApplyElementManifests>: agrega un nuevo elemento a una característica existente. Cuando se actualiza una característica, aprovisiona todos los elementos no declarativos a los que se hace referencia en los manifiestos de elemento especificados.

  • <AddContentTypeField>: agrega un nuevo campo a un tipo de contenido aprovisionado existente. Propaga el cambio desde el tipo de contenido del sitio a todas las listas y los tipos de contenido secundarios del sitio. Por ejemplo:

    <AddContentTypeField 
      ContentTypeId="0x010100A6F9CE1AFE2A48f0A3E6CB5BB770B0F7" 
      FieldId="{B250DCFD-9310-4e2d-85F2-BE2DA37A57D2}" 
      PushDown="TRUE" />
    

    En la mayoría de los casos, los valores de los atributos ContentTypeId y FieldId se especifican en el archivo Elements.xml, donde se definen el tipo de contenido y el campo.

  • <MapFile>: permite asignar un archivo sin personalizar a una ubicación distinta en el servidor front-end web. Puede usar los atributos FromPath y ToPath para cambiar el nombre de un archivo de una característica (por ejemplo, <MapFile FromPath="oldname.gif" ToPath="newname.gif" />), pero también puede usar MapFile para mover un archivo. En este caso, los atributos FromPath y ToPath especifican rutas de acceso relativas al directorio TEMPLATE. Por ejemplo, si una característica denominada "MyFeature" tiene archivos .gif instalados en el directorio "Gifs" (por ejemplo, %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES\MyFeature\Gifs\basketball.gif) y en la versión 2 desea cambiar el nombre del directorio de "Gifs" a "Images", puede usar <MapFile FromPath="Gifs\ball.gif" ToPath="Images\basketball.gif" /> para mover los archivos.

Para ayudar a trabajar con dependencias de característica con versión, se ha agregado el atributo MinimumVersion al elemento <ActivationDependency>, que se usa cuando una característica depende de otra que debe tener un número de versión mayor o igual que MinimumVersion.

Ámbito y aprovisionamiento de manifiestos de elemento

La siguiente tabla muestra los ámbitos en los que un elemento Feature específico es válido. Además, indica si el elemento se aprovisiona cuando se activa la característica o si se deshace su aprovisionamiento cuando la característica se desactiva.

Elemento Feature

Ámbito

Aprovisionamiento

Tipo de contenido

Colección de sitios

Aprovisionado/no aprovisionado

Enlace de tipo de contenido

Colección de sitios, sitio web

Aprovisionado/no aprovisionado

Control

Conjunto o granja de servidores, aplicación web, colección de sitios, sitio web

No aprovisionado en ningún caso (declarativa)

Acción personalizada

Conjunto o granja de servidores, aplicación web, colección de sitios, sitio web

No aprovisionado en ningún caso (declarativa)

Grupos de acciones personalizadas

Conjunto o granja de servidores, aplicación web, colección de sitios, sitio web

No aprovisionado en ningún caso (declarativa)

Convertidor de documentos

Aplicación web

Aprovisionado/no aprovisionado

Asociación de definición de característica o sitio

Conjunto o granja de servidores, aplicación web, colección de sitios

No aprovisionado en ningún caso (declarativa)

Campo

Colección de sitios

Aprovisionado/no aprovisionado

Ocultar acción personalizada

Conjunto o granja de servidores, aplicación web, colección de sitios, sitio web

No aprovisionado en ningún caso (declarativa)

Definición de lista

Colección de sitios, sitio web

No aprovisionado en ningún caso (declarativa)

Instancia de lista

Colección de sitios, sitio web

Aprovisionado/no aprovisionado

Módulo

Colección de sitios, sitio web

Aprovisionado/no aprovisionado

Receptor

Colección de sitios, sitio web

Aprovisionado/no aprovisionado

Plantilla de flujo de trabajo

Colección de sitios

No aprovisionado en ningún caso (declarativa)

Nota

La tabla anterior no incluye la representación de los siguientes tipos de elemento nuevos: Cmdlet, UserMigrator, WebPartAdderExtension, WebTemplate y WorkflowAssociation.

Tal y como se muestra en la tabla, el elemento <CustomAction> está disponible en todos los ámbitos: sitio web, colección de sitios, aplicación web y conjunto o granja de servidores. Se trata de un elemento declarativo que no se aprovisiona y cuyo aprovisionamiento no se deshace, lo que significa que se almacena en la memoria caché directamente desde la definición XML de la característica a la memoria, sin que se produzca ninguna lógica de aprovisionamiento durante la activación de la característica. Por este motivo, después de activar la característica y navegar a las páginas que contienen la acción personalizada, ésta se carga desde la memoria caché y, a continuación, se muestra en la página. El elemento de campo solo es válido en el ámbito de la colección de sitios. Se aprovisiona durante la activación (se crea la columna de sitio) y su aprovisionamiento se deshace durante la desactivación (se quita la columna de sitio). El elemento <ListInstance> es válido en los ámbitos de sitio web y de colección de sitios. Se aprovisiona durante la activación (se crea la instancia de lista), pero su aprovisionamiento no se deshace durante la desactivación (no se elimina la instancia de lista).

Nota

Los elementos declarativos que se especifican en la sección <ElementManifests> se aprovisionan durante la activación de la característica, pero se omiten durante la actualización. Por lo tanto, la forma de agregar elementos declarativos durante la actualización es colocarlos dentro de la sección <ApplyElementManifests>. Debe ejecutar iisreset en la línea de comandos antes de llamar a la actualización para actualizar la memoria caché, o bien usar una actualización de implementación de la solución.