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:
| Condition | 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 — múltiplas soluções encontradas |
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 de soluções do Power Apps, os ficheiros escritos para o fornecedor Git 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.