Visão geral das soluções

Concluído

O Microsoft Power Platform usa o recurso de solução do Microsoft Dataverse para rastrear e gerenciar aplicativos, fluxos, tabelas e até mesmo componentes de código do desenvolvedor, como JavaScript e plug-ins. As soluções são contêineres que podem ser usados pelos ativos de projeto de transporte de um ambiente para outro. As soluções são uma parte essencial da estratégia de ALM (gerenciamento do ciclo de vida do aplicativo) do Microsoft Power Platform.

As soluções podem ser não gerenciadas ou gerenciadas

  • Soluções não gerenciadas: usadas em ambientes de desenvolvimento enquanto você faz alterações nos componentes. Novos componentes podem ser criados na solução e qualquer componente existente no ambiente do Dataverse também pode ser adicionado. As soluções não gerenciadas podem ser exportadas como não gerenciadas ou gerenciadas. Versões exportadas e não gerenciadas de soluções devem ser verificadas no sistema de controle de origem. A ferramenta chamada SolutionPackager pode ser usada para preparar soluções para serem verificadas. É possível automatizar esse processo usando as Microsoft Power Platform Build Tools.

  • Soluções gerenciadas: usadas para implantar em qualquer ambiente que não seja um ambiente de desenvolvimento para essa solução. Os componentes da solução gerenciada não podem ser alterados diretamente na solução gerenciada ou removidos dela, nem podem ser adicionados novos componentes. No entanto, você pode incluir o componente em outra solução não gerenciada e fazer alterações nele. Isso cria uma dependência da solução gerenciada. As soluções gerenciadas podem ser atendidas independentemente de outras soluções gerenciadas em um ambiente. Embora seja possível exportar manualmente uma solução não gerenciada como gerenciada, recomenda-se que as soluções gerenciadas sejam geradas como um artefato de compilação de um processo de compilação automatizado.

As soluções podem ser criadas e gerenciadas por meio do Maker Portal e também podem ser criadas e gerenciadas por desenvolvedores usando a API da plataforma. Há também ferramentas para tarefas e ações de compilação, como SolutionPackager, Package Deployer, DevOps e GitHub, que podem ser usadas pelos desenvolvedores para executar e automatizar várias tarefas relativas à solução.

As soluções podem ser colocadas em camadas

Várias soluções podem coexistir em um ambiente. Para gerenciar essas soluções, o Dataverse as rastreia usando um conceito de camada no nível de componente de solução individual. Todas as soluções não gerenciadas são rastreadas como uma única camada, enquanto cada solução gerenciada é rastreada separadamente. Quando há diversas camadas de soluções gerenciadas, a última solução gerenciada instalada em um ambiente é usada em vez de soluções gerenciadas importadas anteriormente. Alguns componentes dão suporte à mesclagem, em vez de uma abordagem do tipo “o último prevalece”. Por exemplo, um formulário para um aplicativo baseado em modelo do Power Apps pode ser modificado por três soluções gerenciadas, cada uma das quais altera diferentes seções do formulário. Nesse exemplo, o resultado mesclado seria um formulário combinado, incluindo alterações de todas as três soluções gerenciadas. No entanto, a camada não gerenciada está sempre na parte superior, e uma alteração na camada não gerenciada substituirá qualquer alteração nas soluções gerenciadas em um ambiente. Em última análise, um usuário vê uma combinação de todas as camadas de solução em um ambiente. A imagem a seguir ilustra esse conceito.

O conceito de camadas é fundamental para permitir que várias soluções funcionem juntas em um único ambiente. Também permite personalizações adicionais de componentes de uma solução gerenciada.

Dependências da solução

Os componentes da solução geralmente dependem de outros componentes dela. O runtime da solução rastreia dependências para garantir que as soluções não possam ser removidas se outra solução depender delas.

Usar a Power Platform CLI para trabalhar com soluções

Além de usar os portais de criadores, os desenvolvedores também podem usar a Power Platform CLI para executar muitas tarefas de gerenciamento de soluções.

Por exemplo, o item a seguir inicializaria um diretório com um novo projeto de solução do Dataverse e adicionaria uma referência a um componente PCF de controle deslizante que o desenvolvedor criou.

pac solution init --publisher-name developer --publisher-prefix dev
pac solution add-reference --path c:\Users\Downloads\SliderComponent

Empacotamento de soluções

As soluções exportadas de um ambiente do Dataverse são simplesmente um arquivo zip compactado com os metadados incluídos. Como um único arquivo binário, ele não é muito eficaz ou útil quando colocado em um repositório de controle do código-fonte.

Para facilitar o empacotamento da solução de controle do código-fonte, as ferramentas podem descompactar uma solução do Dataverse em uma série de arquivos XML e outros arquivos para que esses arquivos possam ser facilmente gerenciados por um sistema de controle do código-fonte. As ferramentas de empacotamento da solução também podem reempacotar o arquivo zip da solução usando os componentes extraídos.

Os desenvolvedores podem usar as seguintes ferramentas que implementam o suporte ao empacotamento de soluções:

  • Power Platform CLI
  • Power Platform Build Tools para implementar automação
  • Ferramenta SolutionPackager

Empacotamento de soluções usando a Power Platform CLI

Por exemplo, o método a seguir seria exportar uma solução do Dataverse e descompactar todos os arquivos individuais usando a lógica SolutionPackager.

pac solution pack --zipfile C:\MyProject.zip --folder .\MyProjectUnpacked\.
pac solution unpack --zipfile C:\MyProject.zip --folder .\MyProjectUnpacked\.

Ferramenta SolutionPackager

A ferramenta SolutionPackager é distribuída como parte do pacote NuGet Microsoft.CrmSdk.CoreTools.

A ferramenta SolutionPackager é um executável que pode ser usado para realizar as seguintes ações:

  • Extrair: extrair o arquivo de solução .zip para uma pasta

  • Compactar: compactar uma pasta em um arquivo .zip

Ela é compatível com vários argumentos de linha de comando que podem ser usados para executar ações específicas como parte da operação de extração/compactação de soluções. Para obter detalhes detalhados sobre como usar a ferramenta SolutionPackager, consulte o artigo Ferramenta SolutionPackager.

Às vezes, é necessário gerenciar itens, como recursos da Web ou montagens de plug-in, que são criados e gerenciados em projetos separados. Isso requer o mapeamento dos arquivos de solução do local padrão em uma pasta de extração para o diretório do projeto correspondente. Por exemplo, um assembly de plug-in normalmente estará localizado na pasta de saída de compartimento do projeto de assembly de plug-in. Para isso, você pode usar o argumento /map para gerenciar o mapeamento desses locais. Para obter uma explicação detalhada sobre como criar um documento de mapeamento XML, consulte Usar o argumento de comando /map.

Embora o SolutionPackager possa ser executado manualmente, ele é mais comumente usado em processos de compilação automatizados. As tarefas de compilação do Microsoft Power Platform e do Azure DevOps e o GitHub Actions têm etapas que usam o SolutionPackager para descompactar e compactar uma solução.