Compartilhar via


Visão geral da remoção de dependências

Os componentes da solução geralmente dependem de outros componentes da solução. Você não pode excluir qualquer componente da solução que tenha dependências em qualquer outro componente da solução. As dependências são registros criados automaticamente pela estrutura de soluções para evitar que os componentes necessários sejam excluídos enquanto um ou mais componentes dependentes ainda incluem referências a eles.

Exemplos de dependência são: dado que um campo é necessário para o funcionamento de um formulário, quando você tenta executar uma ação que resulta na exclusão desse campo, o formulário para de funcionar.

Outro exemplo é quando você tenta excluir o mapa do site de um aplicativo orientado a modelo. O sistema indica que há uma dependência no aplicativo. O aplicativo é o componente dependente e o mapa do site é o componente obrigatório. O sistema impede que você exclua o mapa do site até que você remova a dependência.

O sistema detecta uma dependência em que o aplicativo depende do mapa do site.

Observação

Excluir significa que o componente é completamente removido Microsoft Dataverse.

Neste artigo, vamos discutir como lidar com essas dependências e as estratégias que você pode usar para remover aquelas que não são mais necessárias.

Dependências de componentes gerenciados vs. não gerenciados

Primeiro, é importante entender que dependências apenas impedem operações que excluem um componente necessário. As ações que podem excluir um componente são diferentes, dependendo se ele é gerenciado ou não gerenciado.

É bom estar familiarizado com o conceito de camadas de solução e componentes ao descrever dependências. Se você não estiver familiarizado, recomendamos que leia este artigo antes de continuar: Camadas de solução

Componentes não gerenciados

Estes componentes são representados por uma única camada na solução ativa. Qualquer operação Excluir nesse tipo de componente resulta na remoção completa dele.

Componentes gerenciados

A exclusão de componentes gerenciados depende de vários fatores: o número de camadas de solução, a posição relativa da camada que está sendo desinstalada e os fornecedores dos componentes. Por exemplo, quando um componente for excluído, considere os seguintes cenários e qual será o comportamento esperado ao desinstalar as várias camadas.

Cenários de exemplo

Os cenários de exemplo a seguir ilustram o que acontece com as camadas de solução quando as soluções são desinstaladas.

Cenário 1: Desinstalar uma única camada de solução

Desinstalar com uma única camada.

A desinstalação da Solução 1 causa a exclusão de um componente porque ela é a única camada dele.

Cenário 2: Desinstalar camadas de solução de fornecedores diferentes

Desinstalar com duas camadas: fornecedor diferente.

  • A desinstalação da Solução 2 não causa a exclusão de um componente. Somente essa camada é removida.
  • A desinstalação da Solução 1 causa a exclusão de um componente porque a ação acontece na camada base. Na verdade, a Solução 1 não pode ser desinstalada nesse cenário, porque uma solução de um fornecedor diferente estende o componente.

Cenário 3: Desinstalar várias camadas de solução de fornecedores diferentes

Desinstalar com várias camadas: fornecedor diferente.

  • A desinstalação da Solução 3 não causa a exclusão de um componente. Somente essa camada é removida.
  • A desinstalação da Solução 2 não causa a exclusão de um componente. Somente essa camada é removida.
  • Desinstalar a Solução 1 não causa a exclusão de um componente, porque neste caso há outra solução do mesmo editor (Editor A = Editor C). A plataforma remove a camada da Solução 1 e a substitui pela camada da Solução 3.

Cenário 4: Desinstalar camadas de solução em uma personalização não gerenciada

Desinstalar com duas camadas: personalização não gerenciada.

  • Desinstalar a camada ativa (não gerenciada) não causa a exclusão do componente. Somente essa camada é removida. Observe que você não pode desinstalar a solução ativa, mas pode remover componentes usando o recurso Remover personalização ativa .
  • A desinstalação da Solução 1 causa a exclusão de um componente. A ação acontece na camada base. Diferentemente do cenário 2, você pode desinstalar a Solução 1. A solução ativa não é considerada uma extensão e ambas as camadas são removidas.

Mostrar página de dependências

O comando Mostrar dependências lista as dependências da solução ou do componente da solução selecionado. Ela pode ser invocada:

  • Selecionando Mostrar dependências na página da solução.
  • Selecionando Avançado>Mostrar dependências em uma solução quando um componente da solução é selecionado.
  • Tentando desinstalar uma solução, o que faz com que a plataforma detecte que existem dependências.

Na página Dependências , você pode abrir, remover ou excluir o componente. Mais informações: Exibir dependências de um componente

Diagnosticando dependências

Considere este cenário. O ambiente aqui tem duas soluções: Solução - Fluxo de trabalho e Solução - Entidade personalizada.

Lista de soluções com duas soluções.

Um criador do ambiente decide que não precisa mais de Solução - Entidade Personalizada. O criador tentou excluí-lo e recebeu a seguinte página:

Detalhes da Dependência depois de tentar excluir uma solução.

A desinstalação da solução está tentando excluir uma tabela chamada Entidade Personalizada e três campos —Entidade Personalizada, Nome e Campo Numérico — e todos os quatro componentes têm dependências.

Observação

A desinstalação da solução pode potencialmente excluir mais componentes, mas como eles não têm dependências, não aparecerão na lista.

A próxima etapa é verificar o link Camadas de Solução (coluna mais à direita) de cada dependência. Isso ajuda você a decidir o que fazer para remover a dependência.

A figura a seguir mostra detalhes de dependência entre a tabela (Entidade Personalizada) e o processo (Fluxo de Trabalho de Teste).

Detalhes de dependência de tabela personalizada.

Com base nos dados exibidos, você pode observar que o componente dependente pertence a uma solução chamada SolutionWorkflow. Para remover essa dependência, você pode:

  • Atualize a definição do fluxo de trabalho no SolutionWorkflow removendo quaisquer referências à tabela ou seus subcomponentes. Em seguida, Atualizar ou Fazer upgrade da solução.
  • Desinstalar a solução SolutionWorkflow.
  • Remover o fluxo de trabalho de uma nova versão da solução SolutionWorkflow e Fazer upgrade.

Como qualquer componente dependente pode impedir a remoção da solução, recomendamos que você verifique todas as dependências e faça todas as alterações necessárias em uma única operação.

A figura a seguir mostra detalhes de dependência entre a tabela (Entidade Personalizada) e um aplicativo orientado a modelo (MyApp).

Dependência entre tabela (Entidade Personalizada) e Aplicativo (Meu Aplicativo).

Com base nos dados exibidos, você pode observar que o componente dependente pertence a uma solução chamada Ativa. Isso indica que a dependência foi criada importando uma solução não gerenciada ou através de uma personalização não gerenciada que foi executada por meio da interface de usuário ou API moderna.

Para remover essa dependência, você pode:

  • Editar a definição do aplicativo baseado em modelo para remover qualquer referência à entidade ou seus subcomponentes. Como os aplicativos baseados em modelo oferecem suporte à publicação, você deve publicar suas alterações.
  • Excluir o aplicativo baseado em modelo.

Observação

Desinstalar uma solução não gerenciada não é uma opção para remover essa dependência, porque as soluções não gerenciadas são apenas um meio de agrupar componentes.

Ações para remover uma dependência gerenciada

As dependências gerenciadas são aquelas em que o componente dependente é associado a uma solução gerenciada. Para resolver esse tipo de dependência, é necessário agir na solução em que o componente foi adicionado. Essa ação pode ser diferente dependendo do que você está tentando fazer.

Se você estiver tentando desinstalar uma solução

Siga as etapas a seguir:

  1. No ambiente de destino, inspecione o link Camadas de solução para descobrir qual é a solução mais alta na lista do componente dependente.
  2. No ambiente de origem, prepare uma nova versão dessa solução em que a solução não contenha o componente dependente ou tenha uma versão atualizada do componente dependente que não contenha referências ao componente necessário. Seu objetivo é remover qualquer referência aos componentes necessários na nova versão da solução.
  3. Exporte a nova versão da solução.
  4. No ambiente de destino, Atualize essa solução.
  5. Repita a desinstalação.

Se você estiver tentando atualizar uma solução

Neste caso, você deve confirmar que queria excluir o componente necessário (lembre-se de que as dependências são impostas apenas nos componentes que estão sendo excluídos).

Se você não queria excluir o componente, é possível corrigir a nova versão da solução adicionando-o de volta. Para isso, siga estas etapas:

  1. No ambiente de destino, desinstale a solução preparada (a solução que termina em _Upgrade).
  2. No ambiente de origem, adicione os componentes necessários de volta à solução.
  3. Exporte a nova versão.
  4. Repita o upgrade.

Se a exclusão for intencional, você deve remover a dependência. Tente as etapas descritas na seção anterior, Se você estiver tentando desinstalar uma solução.

Camadas e dependências

Os componentes dependentes podem ser dispostos em camadas, portanto, talvez seja necessário alterar mais de uma solução para remover completamente uma dependência. A estrutura de dependências calcula apenas as dependências entre as camadas superiores dos componentes necessários e dependentes. Isso significa que você precisa trabalhar de cima para baixo nas soluções do componente dependente.

Considere o cenário a seguir:

Escolhendo uma solução para desinstalar.

Você tenta desinstalar a Solução - Entidade Personalizada e a operação é bloqueada por dependências.

Dependências bloqueando a desinstalação da solução.

Você começa a diagnosticar a dependência selecionando Camadas de Solução no atributo new_numberfield. Você observa a seguinte tela:

Dependência entre o atributo new_numberfield e o fluxo de trabalho Fluxo de Trabalho de Teste.

Como as dependências são criadas apenas entre as camadas superiores de cada componente, a primeira etapa é lidar com a dependência entre o atributo new_numberfield em SolutionCustomEntity e o fluxo de trabalho Fluxo de Trabalho de Test em SolutionWorkflow3.

Para remover a dependência, você decide desinstalar SolutionWorkflow3. Você faz isso, mas quando tenta desinstalar a solução mais uma vez, a mesma página de dependências é exibida:

Dependências bloqueando a desinstalação da Solução: entidade personalizada.

Entretanto, a coluna new_numberfield não está mais listada, mesmo que existisse em mais camadas.

Ações para remover uma dependência não gerenciada

Para remover dependências não gerenciadas, você precisa agir diretamente nos componentes, não nas soluções às quais eles pertencem. Por exemplo, se você quiser remover as dependências entre uma coluna e um formulário, você deve editá-lo no designer de formulários e remover a coluna do formulário. A dependência é removida após você selecionar Salvar e Publicar.

Observação

  • O comando Mostrar dependências permite que você execute uma ação para exibir, remover a dependência, editar o componente ou excluir o componente. Mais informações: Exibir dependências de um componente
  • O botão Exibir dependências aparece quando você tenta excluir um componente que tem dependências. Embora esta tela permita que você visualize a dependência, ela não permite que você tome nenhuma ação.
  • Quando você exclui o componente dependente, a ação exclui todas as dependências, junto com o componente.

Para exibir as dependências de um componente, na área Soluções abra a solução desejada, selecione as reticências verticais ao lado do componente e, depois escolha Avançado>Mostrar dependências.

A página de dependências tem duas partes distintas:

  • Componentes dependentes: uma lista de componentes que dependem da coluna selecionada. Em outras palavras, esses componentes têm essa coluna como componente obrigatório.
  • Componentes necessários: Uma lista de componentes que esta coluna requer para funcionar. Em outras palavras, esses componentes têm essa coluna como seu componente dependente.

Dependências de componentes.

Próximas etapas