Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo é uma referência para o formato de controlo de versões baseado em YAML usado quando se segue:
- Soluções de commit usando integração nativa Dataverse Git em Power Apps.
- Extrair soluções usando
pac solution cloneoupac solution sync. - Execute manualmente o SolutionPackager numa pasta que contenha ficheiros de manifestos YAML.
O formato YAML difere do layout clássico XML. Compreender a estrutura é importante quando se quer empacotar manualmente uma pasta YAML num .zip ficheiro que o Dataverse possa importar.
Importante
O suporte ao formato de controlo de versões YAML na CLI pac requer Microsoft. PowerApps.CLI versão 2.4.1 ou posterior. Descarregue a versão mais recente de NuGet ou atualize via pac install latest. SolutionPackager.exe, que vem com o pacote NuGet, suporta o formato YAML da mesma versão.
Visão geral da estrutura da pasta
A raiz de um repositório em formato YAML contém os seguintes diretórios de topo:
<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 publishers/ são obrigatórios. Todas as pastas componentes na raiz são opcionais e dependem do que a solução contém.
Importante
Todos os ficheiros de manifestos YAML (solution.yml, publisher.yml, e assim sucessivamente) devem ser colocados nos respetivos subdiretórios (solutions/<name>/, publishers/<name>/). Colocá-los na raiz do repositório impede a deteção de formatos e faz com que a ferramenta SolutionPackager volte ao formato XML — produzindo um erro enganador sobre a falta Customizations.xmlde um arquivo . Mais informações: Resolução de problemas da ferramenta SolutionPackager
Deteção automática de formato
O SolutionPackager (e pac solution pack) detetam automaticamente o formato da seguinte forma:
| Condição | Formato detetado | Comportamento |
|---|---|---|
solutions/*/solution.yml Encontrado — Uma solução |
YAML | Nome da solução inferido a partir do nome da subpasta |
solutions/*/solution.yml encontrados — múltiplas soluções |
YAML |
/SolutionName argumento necessário para especificar qual solução embalar |
Não há solutions/ subdiretório presente |
XML (legado) | Expecta Other\Solution.xml e Other\Customizations.xml |
Ficheiros de manifesto
solution.yml
Localizado em solutions/<SolutionUniqueName>/solution.yml. Contém metadados de solução de topo — o equivalente YAML a solution.xml no formato XML.
Os campos-chave incluem o nome único da solução, versão, nome amigo, descrição e uma referência ao editor.
solutioncomponents.yml
Localizado em solutions/<SolutionUniqueName>/solutioncomponents.yml. Lista caminhos relativos a todos os ficheiros de componentes incluídos nesta solução. O SolutionPackager lê este ficheiro durante o pack para localizar as fontes dos componentes.
Excerto 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 ao nível raiz (tipicamente tabelas e outros objetos de topo) que pertencem a esta solução.
Observação
Se um componente for declarado em rootcomponents.yml mas os seus ficheiros fonte estiverem ausentes da pasta (por exemplo, um ficheiro de aplicação .msapp canvas sob canvasapps/<name>/), o SolutionPackager emite um aviso e omite esse componente do pacote .zip. A operação do pack continua a ser concluída com sucesso com o código de saída 0.
O sucesso do pack não garante o sucesso das importações. Se solutioncomponents.yml omitir os caminhos de dependência necessários — como pastas de entidades-mãe ou definições de relação sob entityrelationships/ — a solução faz o pacote sem erro, mas falha na importação com uma mensagem como: "Os atributos estão em falta das definições de relação associadas." Certifique-se solutioncomponents.yml sempre de incluir todas as entidades e relações dependentes, não apenas as detidas pela solução.
missingdependencies.yml
Localizado em solutions/<SolutionUniqueName>/missingdependencies.yml. Regista quaisquer dependências da solução que não estivessem presentes quando a solução foi exportada pela última vez. Usado para fins informativos e para validar a completude na importação.
publisher.yml
Localizado em publishers/<PublisherUniqueName>/publisher.yml. Contém a definição do editor — nome único, nome de visualizaçã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 a tipos de componentes
A tabela seguinte lista como cada tipo de componente é tratado no formato YAML.
| Tipo de componente | Em formato YAML | Notes |
|---|---|---|
| Entidades (tabelas), atributos, formulários, vistas | ✓ Ficheiros YAML | Armazenados como ficheiros YAML individuais por subcomponente |
| Fluxos de trabalho (clássico) | ✓ Ficheiros YAML | Sob workflows/ |
| Fluxos modernos (fluxos cloud do Power Automate) | ✓ — Apenas formato YAML | Sob modernflows/; não suportado em formato XML |
| Aplicações Canvas | ✓ — Apenas formato YAML |
.msapp binário sob canvasapps/<name>/; não suportado em formato XML |
| Definições de variáveis de ambiente | ✓ Ficheiros XML | Ficheiros individuais .xml sob environmentvariabledefinitions/ |
| Valores das variáveis de ambiente | ✓ Ficheiro JSON | Armazenado como environment_variable_values.json |
| Conectores personalizados | ✓ | Sob connectors/ |
| Conjuntos plug-in | ✓ | Nomes de tipo totalmente qualificados remapeados por defeito (/remapPluginTypeNames) |
| Recursos da Web | ✓ | Sob webresources/ |
| Funções de segurança | ✓ | Armazenado internamente como XML; filtrado por solução |
| Conjuntos de opções (globais) | ✓ | 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 de fitas | ✓ | Armazenado como XML; filtrado por solução |
| Relações entre entidades | ✓ | Sob entityrelationships/ |
Observação
Os componentes armazenados internamente como XML são automaticamente convertidos entre XML e YAML durante as operações de empacotamento e desempacotamento. Podes criá-los como ficheiros YAML; A ferramenta trata da conversão.
Repositórios multi-solução
A raiz de um único repositório pode conter múltiplas soluções. Todas as soluções partilham as mesmas pastas de componentes; solutioncomponents.yml em cada solução controla quais os caminhos dos componentes que pertencem a essa solução.
Exemplo de estrutura 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/
Empacotamento de uma solução específica a partir de uma pasta multi-solução
Usando SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Usando pac solution pack (apenas pastas de solução única — para multisolução, use SolutionPackager.exe diretamente com /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Observação
Ao usar integração nativa Dataverse Git com ligação ao ambiente, todas as soluções do ambiente partilham uma única raiz de repositório usando o layout multi-solução. Ao usar ligação de solução, cada solução pode ser associada a uma pasta separada.
A trabalhar com pastas em formato YAML
Empacota uma pasta YAML num ficheiro .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
Obtenha uma pasta YAML completa do Dataverse
A forma recomendada de obter uma pasta YAML completa e empacotável é usar pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Isto extrai a solução para o formato YAML, incluindo todos os ficheiros fonte dos componentes. Alternativamente, use integração nativa com Git para fazer commit a partir do Power Apps — os ficheiros comprometidos estão em formato YAML e são totalmente empacotáveis.
Verifique a pasta antes de empacotar
Verifica se a solutions/<name>/ pasta existe e se todos os caminhos resolvem solutioncomponents.yml para ficheiros reais. Quaisquer caminhos em falta resultam em avisos durante a embalagem e esses componentes são omitidos.
Relação com a integração Git do Dataverse
O formato de controlo de versões YAML é o formato canónico utilizado pela integração Dataverse Git. Quando os criadores fazem commit das soluções do Power Apps, os ficheiros escritos no Azure DevOps utilizam este formato. Os programadores de código em primeiro lugar podem trabalhar com o mesmo repositório usando as ferramentas de CLI descritas aqui.
Para informações sobre como ligar ambientes ao Git, consulte a configuração da integração Git do Dataverse.