enfoque recomendado
Sobre la base de todos estos factores, mi sugerencia sería:
• Crear dos características: una para el marcado original y uno para hacer cambios. (O puede ponerlos en la misma función; solo quiero diferenciar entre dónde se hace qué).
• La característica original debe contener el CAML para Columnas del sitio y tipos de contenido. Esto garantiza que los ID se hayan asignado antes del tipo y permanezcan constantes.
• Si desea actualizar una Columna del sitio cambiando casi cualquier cosa, excepto su Tipo de campo, hágalo utilizando un Receptor de funciones. Al hacer esto, puede llamar al método Update y pasar un booleano que indica si desea actualizar todos los activos existentes en el sitio que hereda de esto, (algo que no podría hacer a través del CAML)
• También puede agregar una Columna del sitio existente (que aprovisionó mediante la función CAML) a un Tipo de contenido existente (que se aprovisionó mediante la función CAML). Esto es útil si la columna no era parte de ese tipo de contenido antes, etc.
• En un escenario como el que acabo de mencionar en el último punto, es necesario desactivar y reactivar la función CAML (para aprovisionar el nuevos activos) antes de llamar a su Feature Receiver. ¿Qué significará esto para el sitio? Dado que todas las columnas del sitio y los tipos de contenido en las listas del sitio usan las mismas ID que las aprobadas en la raíz de la colección de sitios, eliminar su elemento principal de la colección de sitios no cambiará eso. Puede dejarlo huérfano temporalmente, (es decirno habrá relación entre ese elemento y un elemento en la raíz de la colección de sitios, pero funcionará de la misma manera que siempre, ya que es una copia completamente funcional del elemento original) hasta que reactive la característica que coloca el elemento de vuelta en la Colección de sitios. Es como si los padres se fueran de vacaciones cuando desactivas la función y vuelven a casa cuando vuelves a activar la función. Tiene la opción de mantener el CAML y el receptor de funciones, ya que tiene dos escenarios: colecciones de sitios existentes y otras nuevas.
• Puede establecer una política que cada vez que escriba código en su Feature Receiver para actualizar una Columna de sitio o Tipo de contenido, también deberá realizar el cambio en su CAML. Eso significa que cada vez que activó la función CAML en una Colección de sitios "nueva", la CAML estaría actualizada y sería precisa; no habría necesidad de ejecutar la función "actualizador". (En su Receptor de funciones, debe asegurarse de hacer alguna comprobación adicional para asegurarse de que una Columna del sitio ya no pertenezca a un Tipo de contenido antes de agregarla, etc. en caso de que el cambio ya esté en su lugar antes de que se ejecute el código). Este enfoque significa que solo tiene que ejecutar una característica al crear una nueva colección de sitios, pero también significa que mantiene los cambios en dos lugares: en su receptor de funciones para realizar cambios en sitios existentes y en su CAML para sitios nuevos. Es un enfoque más limpio, pero también contiene un elemento de redundancia, que siempre deja espacio para errores humanos.
• El otro enfoque es simplemente suponer que cada vez que se activa la función CAML base, siempre va a ejecutar el Receptor de funciones. Este enfoque indica que la única vez que cambiaría el CAML es agregar una nueva Columna de sitio o un nuevo Tipo de contenido; de lo contrario, todos los cambios suceden en el Receptor de funciones. Este enfoque reduce la redundancia, pero también significa que su código de Feature Receiver podría ser bastante grande con todos sus cambios a lo largo del tiempo, y podría dejar su CAML como un "legado" con el tiempo.
Src: http://blog.beckybertram.com/Lists/Posts/Post.aspx?List=eb3e1762%2Dbab0%2D4e96%2D8bc5%2Dd67d6e6bfd44&ID=18
Lo siento, no puedo ayudarte; tienes muchas más posibilidades de encontrar un experto en SharePoint en [sharepoint.se] –
gracias Greg! Haré la misma pregunta allí, también –
No estoy seguro de si esa url fue alguna vez correcta, pero el sitio actual de StackExchange para las preguntas de SharePoint es http://sharepoint.stackexchange.com –