Como adicionar um campo a um contenttype com atualização de recurso, para sites NOVOS e existentes

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

  •  09-12-2019
  •  | 
  •  

Pergunta

Então, eu tenho usado a atualização de recursos há algum tempo, ela funciona muito bem para instâncias existentes, mas até onde eu sei, a atualização de recursos não acontece automaticamente, você precisa acionar a atualização, que acontece automaticamente por meio do kit de ferramentas de atualização de recursos no centro página de administração.

O problema é que quero adicionar um novo campo às colunas do site e também adicionar esse campo a um tipo de conteúdo existente.

Quando os desenvolvedores anteriores fizeram isso, eles não usaram nenhum recurso de controle de versão, então a versão era 0.0.0.0.

Aumentei para 1.0.0.0 e isso funcionará bem para sites existentes.

No entanto, se eu criar um novo site, tenho certeza de que o novo campo não será criado porque para novos sites o recurso será 1.0.0.0 e não 1.0.0.0, portanto não poderei acionar uma atualização.enter image description here

então aqui está o que tenho até agora.

Elements_1_0_0_0.xml contém isto:

<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 contém isto:

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

A visualização do manifesto do recurso ficaria assim:

<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>
Foi útil?

Solução

a resposta está aqui:http://blogs.msdn.com/b/sanjaynarang/archive/2012/02/06/feature-upgrade-adding-fields-to-content-types-and-sharepoint-application-lifecycle-management.aspx

Atualizando tipos de conteúdo http://msdn.microsoft.com/en-us/library/aa543504.aspxNão atualize, sob nenhuma circunstância, o arquivo de definição de tipo de conteúdo para um tipo de conteúdo depois de instalar e ativar esse tipo de conteúdo.O SharePoint Foundation não controla todas as alterações feitas no arquivo de definição de tipo de conteúdo.Portanto, você não tem um método confiável para transferir todas as alterações feitas nos tipos de conteúdo do site para os tipos de conteúdo filho.

Atualizando tipos de conteúdo filho http://msdn.microsoft.com/en-us/library/ms442695.aspxVocê não pode adicionar colunas a um tipo de conteúdo de site existente de forma declarativa, em outras palavras, atualizando os arquivos XML de recurso

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top