Cómo agregar un campo a un contentType con la actualización de la función, para sitios nuevos y existentes

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/42744

  •  09-12-2019
  •  | 
  •  

Pregunta

Por lo tanto, he estado usando la mejora de la función por un tiempo, funciona bastante bien para las instancias existentes, pero en la medida en que conozco la actualización de características no sucede automáticamente, debe activar la actualización, que ocurre automáticamente a través de la actualización de la función. Toolkit en la página de administración central.

El problema es que quiero agregar un nuevo campo a las columnas del sitio y también agregar ese campo a un tipo de contenido existente.

Cuando los desarrolladores anteriores hicieron esto, no utilizaron versiones de características, por lo que la versión fue de 0.0.0.0.

Me incrementé a 1.0.0.0, y esto funcionará bien para los sitios existentes.

Sin embargo, si creo un nuevo sitio, estoy bastante seguro de que el nuevo campo no se creará porque para los nuevos sitios, la función será 1.0.0.0 no 1.0.0.0, por lo que no podé desencadenar una actualización. ingrese la descripción de la imagen aquí

Así que aquí es lo que tengo hasta ahora.

Elements_1_0_0_0.xml contiene esto:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field ID="{A32453DB-4382-4F5C-8E33-8284AB160E47}" Name="Recurrent" DisplayName="$Resources:SPNLMeetings,Field_AgendaPointRecurrent_Name;" Description="$Resources:SPNLMeetings,Field_AgendaPointRecurrent_Description;" Group="$Resources:SPNLMeetings,Field_NationaleLoterijMeetingColumns_Group;" Type="Boolean" StaticName="Recurrent"  Required="FALSE" />
</Elements>

template.xml contiene esto:

<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
  ImageUrl="SPNL\spnl_feature.jpeg"
  Title="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Title"
  Description="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Description" Version="1.0.0.0">
  <UpgradeActions>    
    <VersionRange BeginVersion="0.0.0.0" EndVersion="0.9.9.9">
      <ApplyElementManifests>
        <ElementManifest Location="Fields\Elements_1_0_0_0.xml" />
      </ApplyElementManifests>
      <AddContentTypeField ContentTypeId="0x0120D52000D56C75F51E1BD54E9D59BBBA1925379A01"
          FieldId="{A32453DB-4382-4F5C-8E33-8284AB160E47}" PushDown="TRUE"/>
      <CustomUpgradeAction Name="ReorderFields"/>
    </VersionRange>
  </UpgradeActions>
</Feature>

Vista previa del manifiesto de características se vería así:

<Feature xmlns="http://schemas.microsoft.com/sharepoint/" ImageUrl="SPNL\spnl_feature.jpeg" Title="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Title" Description="$Resources:SPNLMeetings,Feature_NLMeetingsContentTypes_Description" Version="1.0.0.0" DefaultResourceFile="SPNLMeetings" Id="5d35f78b-2211-4cd8-bcba-6db7ac456b74" ReceiverAssembly="NationaleLoterij.SharePoint.Meetings.Solution, Version=1.0.0.0, Culture=neutral, PublicKeyToken=212c981019c3ab5d" ReceiverClass="NationaleLoterij.SharePoint.Meetings.Solution.Features.NLMeetingsContentTypes.NLMeetingsContentTypesEventReceiver" Scope="Site">
  <UpgradeActions>
    <VersionRange BeginVersion="0.0.0.0" EndVersion="0.9.9.9">
      <ApplyElementManifests>
        <ElementManifest Location="Fields\Elements_1_0_0_0.xml" />
      </ApplyElementManifests>
      <AddContentTypeField ContentTypeId="0x0120D52000D56C75F51E1BD54E9D59BBBA1925379A01" FieldId="{A32453DB-4382-4F5C-8E33-8284AB160E47}" PushDown="TRUE" />
      <CustomUpgradeAction Name="ReorderFields" />
    </VersionRange>
  </UpgradeActions>
  <ActivationDependencies>
    <ActivationDependency FeatureTitle="$Resources:SPNL,Feature_NLBaseContentTypes_Title" FeatureDescription="$Resources:SPNL,Feature_NLBaseContentTypes_Description" FeatureId="e3356a10-dcd9-45a5-a1f5-6d9695b9c671" />
  </ActivationDependencies>
  <ElementManifests>
    <ElementManifest Location="Fields\Elements.xml" />
    <ElementManifest Location="ContentTypes\Elements.xml" />
    <ElementFile Location="AgendaPointProposedContentTypeResources\docsethomepage.aspx" />
    <ElementManifest Location="AgendaPointProposedContentTypeResources\Elements.xml" />
    <ElementFile Location="AgendaPointContentTypeResources\docsethomepage.aspx" />
    <ElementManifest Location="AgendaPointContentTypeResources\Elements.xml" />
  </ElementManifests>
</Feature>

¿Fue útil?

Solución

La respuesta está aquí: http://blogs.msdn.com/b/sanjaynarang/archive/2012/02/06/fefeure-upgrade-adding-fields-a-content-types-and-sharepoint-application -Lifecycle-Management.aspx

Actualizando los tipos de contenido http:// msdn. microsoft.com/en-us/library/aa543504.aspx No, en ninguna circunstancia, actualice el archivo de definición de tipo de contenido para un tipo de contenido después de instalar y activar ese tipo de contenido. SharePoint Foundation no rastreando todos los cambios que se realizan al archivo de definición de Tipo de contenido. Por lo tanto, no tiene un método confiable para presionar todos los cambios realizados a los tipos de contenido del sitio a los tipos de contenido infantil.

Actualizando los tipos de contenido secundario http:// msdn .Microsoft.com / EN-US / Library / MS442695.ASPX No puede agregar columnas a un tipo de contenido del sitio existente de manera declarativa, en otras palabras, actualizando los archivos XML de la función

Licenciado bajo: CC-BY-SA con atribución
scroll top