Prática recomendada para implantar vários tipos de conteúdo com dependências no SharePoint
-
13-12-2019 - |
Pergunta
Estou desenvolvendo uma solução com aprox.15 tipos de conteúdo personalizados.Portanto criei no Visual Studio um projeto SharePoint e adicionei tipos de conteúdo definidos em XML Markup.Como alguns desses tipos de conteúdo usam referências entre si (colunas de pesquisa), adicionei também definições de lista e instâncias de lista.Como as pesquisas podem ser declaradas em XML desde o SharePoint 2010 - está tudo bem.
Agora meu recurso contém todos os tipos de conteúdo, as definições de lista e as instâncias de lista.
Mas o problema é:Às vezes, a implantação é bem-sucedida e às vezes falha.Suponho que isso possa ocorrer porque os elementos dos recursos não possuem ordem de ativação.Agora eu poderia mudar meu projeto e criar um recurso para cada tipo de conteúdo e definir dependências de ativação para definir uma ordem de ativação.Mas isso levaria a pelo menos 20 recursos e, na minha opinião, essa não pode ser a suposta solução para lidar com isso corretamente.
Qual é a maneira correta de implantar tipos de conteúdo com pesquisas para outros tipos de conteúdo na mesma solução?
Há uma restrição:tudo precisa estar em área restrita porque quero implantar no SharePoint Online.
Solução
Acredito que tive o mesmo problema que você - defini dois tipos de conteúdo;A e B, B confiou em A.e ambos estavam no filme único.No entanto, quando chegou a hora de implantar, recebi um erro:
Ocorreu um erro na etapa de implantação 'Ativar recursos':O tipo de conteúdo pai especificado pelo identificador de tipo de conteúdo 0x010029043F0D68EC4DF1BC85141AFF451661 não existe.
Procurei no arquivo Manifest.xml que o Visual Studio gera dentro do arquivo wsp/cab e percebi que os dois arquivos do tipo de conteúdo Elements.xml foram definidos de maneira errada:
- B/Elementos.xml
- A/Elementos.xml
Uma solução alternativa para isso é simplesmente forçar a ordem de determinado arquivo Elements.xml no recurso (ou seja,coloque os arquivos do tipo de conteúdo 'raiz' primeiro).
Abra o recurso, vá para Manifesto, abra Opções de edição e insira o arquivo que você precisa especificar primeiro na lista de arquivos Elements.xml.
<ElementManifests>
<ElementManifest Location="A\Elements.xml" />
</ElementManifests>
Isso emite o seguinte XML no arquivo de manifesto:
<ElementManifests>
<ElementManifest Location="A\Elements.xml" />
<ElementManifest Location="B\Elements.xml" />
</ElementManifests>