O Feature Receiver é acionado antes que o conteúdo do Layouts seja copiado
-
10-12-2019 - |
Pergunta
Eu tenho um pacote com algumas páginas do aplicativo (na pasta Layouts) e um recurso que contém alguns WebParts.Achei que o conteúdo dos Layouts é copiado primeiro para o SharePoint, depois os WebParts do Recurso e, em seguida, o Receptor do Recurso é acionado.Pelo menos é assim no Visual Studio porque a pasta Layouts está sempre na posição superior.Mas quando tento modificar as páginas no Feature Receiver, ele lança um arquivo não existe exceção.Os URLs estão corretos e se eu modificar uma página existente ela também funciona.
O que preciso fazer para que meu Receptor seja acionado depois que todo o conteúdo do Layouts for implantado?
Solução
O processo de implantação/ativação contém muitas etapas (embora o VS tente fazer com que pareça uma):
- Quando o WSP é adicionado ao farm, ele é armazenado no banco de dados de configuração
- Quando a solução é implantada muitas coisas acontecem em cada servidor do Farm
2.1 O servidor obtém o WSP do banco de dados de configuração
2.2 Os arquivos das pastas mapeadas (como páginas de layout) são copiados para o local correto no sistema de arquivos
2.3 As DLLs são adicionadas ao GAC (ou pasta bin)
2.4 Entradas SafeControl são adicionadas ao web.config de WebApplications
2.5 O evento FeatureInstalled é acionado - Quando o recurso está ativado
3.1 Elementos declarativos como arquivos de<Module>
elementos (como seus arquivos .webpart) são adicionados
3.2 O evento FeatureActivated é acionado
Tudo isso acontece quando você escolhe implantar do VS (além de muitas desinstalações) com a configuração de implantação padrão.Mas a ordem ainda é a acima.
Portanto, os arquivos em _layouts ou SharePointRoot/TEMPLATE/LAYOUTS estão no lugar antes dos eventos serem disparados.
Mas você mencionou que tentou modificar os arquivos LAYOUTS no Feature Receiver.Isso não é algo que você deva fazer.Os arquivos no SharePointRoot não devem ser modificados.
Outras dicas
Você pode usar a configuração "sem ativação de ativação" , que irá ajudá-lo a depurar receptores de recursos.Usando a configuração sem ativação Você implantaria seu pacote para o SharePoint, vá para a página de recursos, ative seu recurso e depure o receptor de recursos.