Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo é uma referência para o formato de controle do código-fonte baseado em YAML usado quando você:
- Confirme soluções usando a integração do Git do Dataverse no Power Apps.
- Extrair soluções usando
pac solution cloneoupac solution sync. - Execute manualmente o SolutionPackager em uma pasta que contém arquivos de manifesto YAML.
O formato YAML difere do layout XML clássico. Entender a estrutura é importante quando você deseja empacotar manualmente uma pasta YAML de volta em um .zip arquivo que o Dataverse pode importar.
Importante
O suporte ao formato de controle do código-fonte YAML na CLI do pac requer Microsoft. PowerApps.CLI versão 2.4.1 ou posterior. Baixe a versão mais recente do NuGet ou atualize por pac install latest. SolutionPackager.exe, que é fornecido com o pacote NuGet, dá suporte ao formato YAML da mesma versão.
Visão geral da estrutura de pastas
Uma raiz do repositório de formato YAML contém os seguintes diretórios de nível superior:
<repositoryRoot>/
├── solutions/
│ └── <SolutionUniqueName>/ (one subfolder per solution)
│ ├── solution.yml
│ ├── solutioncomponents.yml
│ ├── rootcomponents.yml
│ └── missingdependencies.yml
├── publishers/
│ └── <PublisherUniqueName>/ (one subfolder per publisher)
│ └── publisher.yml
├── entities/ (entity components, if any)
│ └── <entity_schema_name>/
│ ├── attributes/
│ ├── formxml/
│ ├── savedqueries/
│ └── ...
├── workflows/ (classic workflow definitions, if any)
├── modernflows/ (Power Automate cloud flows, if any)
├── canvasapps/ (canvas app .msapp files, if any)
│ └── <canvas_app_schema_name>/
│ └── <name>.msapp
├── environmentvariabledefinitions/ (environment variable definitions, if any)
├── connectors/ (custom connectors, if any)
└── [other component folders]/
Os solutions/ diretórios e os diretórios publishers/ são necessários. Todas as pastas de componente na raiz são opcionais e dependem do que a solução contém.
Importante
Todos os arquivos de manifesto YAML (solution.ymlpublisher.ymle assim por diante) devem ser colocados sob seus respectivos subdiretórios (solutions/<name>/, publishers/<name>/). Colocá-los na raiz do repositório impede a detecção de formato e faz com que a ferramenta SolutionPackager retorne ao formato XML, produzindo um erro enganoso sobre uma falta Customizations.xml. Mais informações: Solução de problemas da ferramenta SolutionPackager
Formatar detecção automática
SolutionPackager (e pac solution pack) detecta automaticamente o formato da seguinte maneira:
| Condição | Formato detectado | Comportamento |
|---|---|---|
solutions/*/solution.yml encontrado – uma solução |
YAML | Nome da solução inferido do nome da subpasta |
solutions/*/solution.yml encontrado – várias soluções |
YAML |
/SolutionName argumento necessário para especificar qual solução empacotar |
Nenhum solutions/ subdiretório presente |
XML (herdado) |
Other\Solution.xml Espera eOther\Customizations.xml |
Ficheiros de manifesto
solution.yml
Localizado em solutions/<SolutionUniqueName>/solution.yml. Contém metadados de solução de nível superior – o equivalente solution.xml YAML no formato XML.
Os campos de chave incluem o nome exclusivo da solução, a versão, o nome amigável, a descrição e uma referência ao editor.
solutioncomponents.yml
Localizado em solutions/<SolutionUniqueName>/solutioncomponents.yml. Lista caminhos relativos para todos os arquivos de componente incluídos nesta solução. SolutionPackager lê esse arquivo durante o pacote para localizar fontes de componente.
Trecho de exemplo:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Localizado em solutions/<SolutionUniqueName>/rootcomponents.yml. Lista os componentes de nível raiz (normalmente tabelas e outros objetos de nível superior) que pertencem a essa solução.
Observação
Se um componente for declarado, rootcomponents.yml mas seus arquivos de origem estiverem ausentes da pasta (por exemplo, um arquivo de aplicativo .msapp de tela em canvasapps/<name>/), SolutionPackager emitirá um aviso e omitirá esse componente do pacote .zip. A operação do pacote ainda é concluída com êxito com o código de saída 0.
O sucesso do pacote não garante o sucesso da importação. Se solutioncomponents.yml omitir caminhos de dependência necessários , como pastas de entidade pai ou definições de relação em – entityrelationships/ a solução empacota sem erro, mas falha ao importar com uma mensagem como: "Atributos estão faltando definições de relação associadas". Sempre certifique-se de incluir solutioncomponents.yml todas as entidades e relações dependentes, não apenas as de propriedade da solução.
missingdependencies.yml
Localizado em solutions/<SolutionUniqueName>/missingdependencies.yml. Registra as dependências de solução que não estavam presentes quando a solução foi exportada pela última vez. Usado para fins informativos e para validar a integridade na importação.
publisher.yml
Localizado em publishers/<PublisherUniqueName>/publisher.yml. Contém a definição do editor — nome exclusivo, nome de exibição, prefixo de personalização e prefixo de valor de opção.
Estrutura mínima necessária:
Publisher:
UniqueName: mypublisher
LocalizedNames:
LocalizedName:
'@description': My Publisher
'@languagecode': '1033'
Descriptions:
EMailAddress:
'@xsi:nil': 'true'
'@xmlns:xsi': http://www.w3.org/2001/XMLSchema-instance
SupportingWebsiteUrl:
'@xsi:nil': 'true'
'@xmlns:xsi': http://www.w3.org/2001/XMLSchema-instance
CustomizationPrefix: myp
CustomizationOptionValuePrefix: '12345'
Addresses:
Suporte ao tipo de componente
A tabela a seguir lista como cada tipo de componente é tratado no formato YAML.
| Tipo de componente | No formato YAML | Observações |
|---|---|---|
| Entidades (tabelas), atributos, formulários, exibições | ✓ Arquivos YAML | Armazenados como arquivos YAML individuais por subcomponente |
| Fluxos de trabalho (clássico) | ✓ Arquivos YAML | Em workflows/ |
| Fluxos modernos (fluxos de nuvem Power Automate) | ✓ — somente formato YAML | Em modernflows/; sem suporte no formato XML |
| Aplicativos Canvas | ✓ — somente formato YAML |
.msapp binário em canvasapps/<name>/; sem suporte no formato XML |
| Definições de variável de ambiente | ✓ Arquivos XML | Arquivos individuais .xml em environmentvariabledefinitions/ |
| Valores de variável de ambiente | ✓ Arquivo JSON | Armazenado como environment_variable_values.json |
| Conectores personalizados | ✓ | Em connectors/ |
| Assemblies de plug-in | ✓ | Nomes de tipo totalmente qualificados remapeados por padrão (/remapPluginTypeNames) |
| Recursos da Web | ✓ | Em webresources/ |
| Funções de segurança | ✓ | Armazenado como XML internamente; filtrado por solução |
| Conjuntos de opções (global) | ✓ | Armazenado como XML; filtrado por solução |
| Dashboards | ✓ | Armazenado como XML; filtrado por solução |
| Mapas do site | ✓ | Armazenado como XML; filtrado por solução |
| Personalizações da faixa de opções | ✓ | Armazenado como XML; filtrado por solução |
| Relações de entidade | ✓ | Em entityrelationships/ |
Observação
Os componentes armazenados como XML internamente são convertidos automaticamente entre XML e YAML durante operações de pacote e desempacotamento. Você pode criar como arquivos YAML; a ferramenta manipula a conversão.
Repositórios de várias soluções
Uma única raiz de repositório pode conter várias soluções. Todas as soluções compartilham as mesmas pastas de componente; solutioncomponents.yml em cada solução controla quais caminhos de componente pertencem a essa solução.
Estrutura de exemplo com duas soluções:
<repositoryRoot>/
├── solutions/
│ ├── SolutionA/
│ │ ├── solution.yml
│ │ ├── solutioncomponents.yml ← references entities/account, entities/contact
│ │ ├── rootcomponents.yml
│ │ └── missingdependencies.yml
│ └── SolutionB/
│ ├── solution.yml
│ ├── solutioncomponents.yml ← references entities/lead, workflows/myflow
│ ├── rootcomponents.yml
│ └── missingdependencies.yml
├── publishers/
│ └── SharedPublisher/
│ └── publisher.yml
├── entities/
│ ├── account/
│ ├── contact/
│ └── lead/
└── workflows/
└── myflow/
Empacotando uma solução específica de uma pasta de várias soluções
Usando SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Usando pac solution pack (somente pastas de solução única – para várias soluções, use SolutionPackager.exe diretamente com /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Observação
Ao usar a integração nativa do Dataverse Git com a associação de ambiente, todas as soluções no ambiente compartilham uma única raiz de repositório usando o layout de várias soluções. Ao usar a associação de solução, cada solução pode ser associada a uma pasta separada.
Trabalhando com pastas de formato YAML
Empacotar uma pasta YAML em um arquivo .zip
# Using pac CLI (single solution in folder)
pac solution pack --zipfile C:\output\MySolution.zip --folder C:\repos\myrepo
# Using SolutionPackager.exe directly (also works for multi-solution with /SolutionName)
SolutionPackager.exe /action:Pack /zipfile:C:\output\MySolution.zip /folder:C:\repos\myrepo
Obter uma pasta YAML completa do Dataverse
A maneira recomendada de obter uma pasta YAML completa e empacotável é usar pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Isso extrai a solução para o formato YAML, incluindo todos os arquivos de origem do componente. Como alternativa, use a integração nativa do Git para confirmar de Power Apps – os arquivos confirmados estão no formato YAML e totalmente empacotáveis.
Verificar a pasta antes de empacotar
Verifique se a solutions/<name>/ pasta existe e se todos os caminhos são solutioncomponents.yml resolvidos para arquivos reais. Quaisquer caminhos ausentes resultam em avisos durante o pacote e esses componentes são omitidos.
Relação com a integração do Git do Dataverse
O formato de controle do código-fonte YAML é o formato canônico usado pela integração do Dataverse Git. Quando os criadores confirmam soluções de Power Apps, os arquivos gravados em Azure DevOps usam esse formato. Os desenvolvedores de primeiro código podem trabalhar com o mesmo repositório usando as ferramentas da CLI descritas aqui.
Para obter informações sobre como conectar ambientes ao Git, consulte a configuração de integração do Dataverse Git.