Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Bài viết này là tham chiếu cho định dạng điều khiển nguồn dựa trên YAML được sử dụng khi bạn:
- Cam kết giải pháp sử dụng Dataverse Git tích hợp tích hợp Power Apps.
- Giải nén giải pháp bằng cách
pac solution clonesử dụng hoặcpac solution sync. - Chạy SolutionPackager theo cách thủ công đối với một thư mục có chứa tệp bản kê YAML.
Định dạng YAML khác với bố trí XML cổ điển. Hiểu cấu trúc là quan trọng khi bạn muốn đóng gói thủ công một thư mục YAML trở lại vào một .zip tập tin dataverse có thể nhập.
Quan trọng
Hỗ trợ định dạng điều khiển nguồn YAML trong pac CLI yêu Microsoft. PowerApps.CLI phiên bản 2.4.1 trở lên. Tải xuống phiên bản mới nhất từ NuGet hoặc cập nhật qua pac install latest. SolutionPackager.exe, đi kèm với gói NuGet, hỗ trợ định dạng YAML từ cùng một phiên bản.
Tổng quan về cấu trúc thư mục
Gốc kho chứa định dạng YAML chứa các thư mục mức cao nhất sau đây:
<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]/
Yêu solutions/ cầu publishers/ thư mục và thư mục. Tất cả các thư mục cấu phần tại gốc là tùy chọn và phụ thuộc vào những gì giải pháp chứa.
Quan trọng
Tất cả các tệp kê khai YAML (solution.yml, publisher.yml, v.v.) phải được đặt dưới các thư mục con tương ứng của chúng (solutions/<name>/, publishers/<name>/). Việc đặt chúng tại gốc kho sẽ ngăn phát hiện định dạng và khiến công cụ SolutionPackager quay lại định dạng XML — Customizations.xmltạo ra lỗi sai lệch về thiếu . Thông tin thêm: Khắc phục sự cố công cụ SolutionPackager
Định dạng tự động phát hiện
SolutionPackager (và pac solution pack) tự động phát hiện định dạng như sau:
| Điều kiện | Định dạng được phát hiện | Hành vi |
|---|---|---|
solutions/*/solution.yml đã tìm thấy — một giải pháp |
YAML | Tên giải pháp được suy ra từ tên thư mục con |
solutions/*/solution.yml Tìm thấy — Nhiều giải pháp |
YAML |
/SolutionName đối số bắt buộc để chỉ rõ cần đóng gói giải pháp nào |
Không solutions/ có thư mục con |
XML (thừa tự) | Kỳ vọng và Other\Solution.xmlOther\Customizations.xml |
Tệp kê khai
solution.yml
Tọa lạc tại solutions/<SolutionUniqueName>/solution.yml. Chứa siêu dữ liệu giải pháp mức cao nhất — YAML tương đương solution.xml với định dạng XML.
Các trường khóa bao gồm tên duy nhất, phiên bản, tên thân thiện, mô tả và tham chiếu đến nhà phát hành.
solutioncomponents.yml
Tọa lạc tại solutions/<SolutionUniqueName>/solutioncomponents.yml. Liệt kê đường dẫn tương đối đến tất cả các tệp cấu phần được bao gồm trong giải pháp này. SolutionPackager đọc tệp này trong khi đóng gói để xác định nguồn cấu phần.
Trích dẫn ví dụ:
- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher
rootcomponents.yml
Tọa lạc tại solutions/<SolutionUniqueName>/rootcomponents.yml. Liệt kê các cấu phần mức gốc (thường là bảng và các đối tượng mức cao nhất khác) thuộc về giải pháp này.
Lưu ý
rootcomponents.yml Nếu một cấu phần được công bố nhưng các tệp nguồn của nó không có trong thư mục (ví dụ: .msappcanvasapps/<name>/một tệp ứng dụng bảng tùy biến trong ), SolutionPackager .zipphát ra một cảnh báo và bỏ qua cấu phần đó khỏi gói . Thao tác gói vẫn hoàn tất thành công với mã thoát 0.
Gói thành công không đảm bảo nhập thành công.
solutioncomponents.yml Nếu bỏ qua đường dẫn phụ thuộc bắt buộc — entityrelationships/ chẳng hạn như thư mục thực thể mẹ hoặc định nghĩa mối quan hệ trong — các gói giải pháp không có lỗi nhưng không nhập được với thông báo như sau: "Thuộc tính thiếu định nghĩa mối quan hệ liên kết.". Luôn đảm bảo solutioncomponents.yml bao gồm tất cả các thực thể và mối quan hệ phụ thuộc, không chỉ các giải pháp sở hữu.
missingdependencies.yml
Tọa lạc tại solutions/<SolutionUniqueName>/missingdependencies.yml. Ghi lại mọi quan hệ phụ thuộc giải pháp không có mặt khi giải pháp được xuất lần cuối. Được sử dụng cho mục đích thông tin và để xác thực tính hoàn chỉnh khi nhập.
publisher.yml
Tọa lạc tại publishers/<PublisherUniqueName>/publisher.yml. Chứa định nghĩa nhà phát hành — tên duy nhất, tên hiển thị, tiền tố tùy chỉnh và tiền tố giá trị tùy chọn.
Cấu trúc bắt buộc tối thiểu:
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:
Hỗ trợ loại cấu phần
Bảng sau đây liệt kê cách xử lý từng kiểu cấu phần trong định dạng YAML.
| Loại thành phần | Ở định dạng YAML | Ghi chú |
|---|---|---|
| Thực thể (bảng), thuộc tính, biểu mẫu, dạng xem | - Tệp YAML | Được lưu trữ dưới dạng tệp YAML riêng lẻ cho mỗi thành phần con |
| Dòng công việc (cổ điển) | - Tệp YAML | Dưới workflows/ |
| Dòng hiện đại (Power Automate dòng đám mây) | — Chỉ định dạng YAML | Dưới ; modernflows/không được hỗ trợ trong định dạng XML |
| Ứng dụng canvas | — Chỉ định dạng YAML |
.msapp nhị phân dưới canvasapps/<name>/; không được hỗ trợ trong định dạng XML |
| Định nghĩa biến môi trường | - Tệp XML | Các tệp .xml riêng lẻ trong environmentvariabledefinitions/ |
| Giá trị biến môi trường | - Tệp JSON | Được lưu trữ dưới dạng environment_variable_values.json |
| Trình kết nối tùy chỉnh | ✓ | Dưới connectors/ |
| Hợp phần bổ trợ | ✓ | Tên loại đủ điều kiện được ánh xạ lại theo mặc định (/remapPluginTypeNames) |
| Tài nguyên web | ✓ | Dưới webresources/ |
| Vai trò bảo mật | ✓ | Được lưu trữ dưới dạng XML nội bộ; đã lọc cho mỗi giải pháp |
| Bộ tùy chọn (toàn cục) | ✓ | Được lưu trữ dưới dạng XML; đã lọc cho mỗi giải pháp |
| Bảng thông tin | ✓ | Được lưu trữ dưới dạng XML; đã lọc cho mỗi giải pháp |
| Sơ đồ site | ✓ | Được lưu trữ dưới dạng XML; đã lọc cho mỗi giải pháp |
| Tùy chỉnh ribbon | ✓ | Được lưu trữ dưới dạng XML; đã lọc cho mỗi giải pháp |
| Mối quan hệ thực thể | ✓ | Dưới entityrelationships/ |
Lưu ý
Các cấu phần được lưu trữ dưới dạng XML nội bộ được tự động chuyển đổi giữa XML và YAML trong khi đóng gói và mở gói thao tác. Bạn có thể biên soạn chúng như là tập tin YAML; công cụ xử lý chuyển đổi.
Kho chứa đa giải pháp
Một gốc kho chứa đơn có thể chứa nhiều giải pháp. Tất cả các giải pháp chia sẻ cùng một thư mục thành phần; solutioncomponents.yml trong mỗi giải pháp sẽ kiểm soát đường dẫn cấu phần nào thuộc về giải pháp đó.
Cấu trúc ví dụ với hai giải pháp:
<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/
Đóng gói một giải pháp cụ thể từ thư mục đa giải pháp
Sử dụng SolutionPackager.exe:
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
Sử dụng pac solution pack (chỉ thư mục giải pháp đơn — cho đa giải pháp, sử dụng SolutionPackager.exe trực tiếp với /SolutionName):
pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo
Lưu ý
Khi sử dụng tích hợp Dataverse Git gốc với gắn kết môi trường, tất cả các giải pháp trong môi trường đều chia sẻ một gốc kho duy nhất bằng cách sử dụng bố trí đa giải pháp. Khi sử dụng kết ghép giải pháp, mỗi giải pháp có thể được gắn kết với một thư mục riêng biệt.
Làm việc với thư mục định dạng YAML
Đóng gói thư mục YAML vào tệp .zip của bạn
# 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
Lấy thư mục YAML hoàn chỉnh từ Dataverse
Cách được đề xuất để có được thư mục YAML hoàn chỉnh, có thể đóng gói là sử dụng pac solution clone:
pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo
Thao tác này sẽ trích xuất giải pháp thành định dạng YAML, bao gồm tất cả các tệp nguồn cấu phần. Ngoài ra, sử dụng tích hợp Git gốc để cam kết từ Power Apps - các tập tin cam kết có định dạng YAML và hoàn toàn đóng gói.
Xác minh thư mục trước khi đóng gói
Kiểm tra xem thư mục solutions/<name>/ có tồn tại không và tất cả các đường dẫn trong giải quyết solutioncomponents.yml đến các tệp thực tế. Bất kỳ đường dẫn bị thiếu nào sẽ dẫn đến cảnh báo trong khi đóng gói và các cấu phần đó bị bỏ qua.
Mối quan hệ với tích hợp Dataverse Git
Định dạng điều khiển nguồn YAML là định dạng chuẩn được tích hợp Dataverse Git sử dụng. Khi các nhà sản xuất cam kết giải pháp Power Apps, các tập tin được viết cho nhà cung cấp Git sử dụng định dạng này. Các nhà phát triển đầu tiên về mã có thể làm việc với cùng một kho lưu trữ bằng cách sử dụng các công cụ CLI được mô tả ở đây.
Để biết thông tin về việc kết nối môi trường với Git, hãy xem thiết lập tích hợp Dataverse Git.