Come aggiungere un campo a un contentType con aggiornamento delle funzionalità, per i siti nuovi ed esistenti

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

  •  09-12-2019
  •  | 
  •  

Domanda

Allora, ho utilizzato l'aggiornamento delle funzionalità per un po ', funziona abbastanza bene per le istanze esistenti, ma per quanto che conosco l'aggiornamento delle caratteristiche non si verifica automaticamente, è necessario attivare l'aggiornamento, che si verifica automaticamente tramite l'aggiornamento della funzione Toolkit nella pagina dell'amministrazione centrale.

Il problema è che voglio aggiungere un nuovo campo alle colonne del sito e aggiungere anche il campo a un tipo di contenuto esistente.

Quando gli sviluppatori precedenti hanno fatto ciò, hanno usato nessuna versioning della funzione, quindi la versione è stata 0.0.0.0.

Ho incrementato a 1.0.0.0, e questo funzionerà bene per i siti esistenti.

Tuttavia se creo un nuovo sito, sono abbastanza sicuro che il nuovo campo non venga creato perché per i nuovi siti la funzione sarà 1.0.0.0 non 1.0.0.0, quindi non potrò attivare un aggiornamento. Inserire l'immagine Descrizione qui

Quindi ecco cosa ho finora.

elements_1_0_0_0.xml contiene questo:

<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 questo:

<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>
.

L'anteprima del manifest di funzionalità sarà simile a questo:

<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>
.

È stato utile?

Soluzione

La risposta è qui: http://blogs.mssdn.com/b/sanjaynaranrang/archive/2012/02/06/Feature-upgrade-adding-fields-To-Content-types-and-SharePoint-Application-Application -Lifecycle-Management.aspx

Aggiornamento dei tipi di contenuto http:// msdn. microsoft.com/en-us/library/aa543504.aspx Non, in nessuna circostanza, aggiornare il file di definizione del tipo di contenuto per un tipo di contenuto dopo aver installato e attiva il tipo di contenuto. SharePoint Foundation non traccia tutte le modifiche apportate al file di definizione del tipo di contenuto. Pertanto, non si ha un metodo affidabile per aver premuto tutte le modifiche apportate ai tipi di contenuto del sito ai tipi di contenuto del bambino.

Aggiornamento dei tipi di contenuto figlio http:// msdn .microsoft.com / en-noi / biblioteca / ms442695.aspx Non è possibile aggiungere colonne a un tipo di contenuto del sito esistente in modo dichiarativo, in altre parole, aggiornando i file XML funzione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top