הפניה לתבנית בקרת מקור YAML של פתרון

מאמר זה הוא חומר עזר עבור תבנית בקרת המקור המבוססת על YAML המשמשת כאשר אתה:

  • בצע פתרונות באמצעות שילוב Dataverse Git מקורי ב- Power Apps.
  • חלץ פתרונות באמצעות pac solution clone או pac solution sync.
  • הפעל את SolutionPackager באופן ידני מול תיקיה המכילה קבצי מניפסט של YAML.

תבנית YAML שונה מהפריסה הקלאסית של XML. הבנת המבנה חשובה כאשר ברצונך לארוז באופן ידני תיקיית YAML בחזרה לקובץ .zip ש- Dataverse יכול לייבא.

חשוב

תמיכה בתבנית בקרת מקור של YAML ב- pac CLI דורשת Microsoft. PowerApps.CLI גירסה 2.4.1 ואילך. הורד את הגירסה העדכנית ביותר מ- NuGet או עדכן באמצעות pac install latest. SolutionPackager.exe, אשר נשלחת עם חבילת NuGet, תומכת בתבנית YAML מאותה גירסה.

מבט כולל על מבנה התיקיות

בסיס מאגר בתבנית YAML מכיל את הספריות ברמה העליונה הבאות:

<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]/

הספריות solutions/publishers/ והספריות נדרשות. כל תיקיות הרכיבים בבסיס הן אופציונליות, והן תלויות במה שהפתרון מכיל.

חשוב

יש למקם את כל קבצי המניפסט של YAML (solution.yml, publisher.ymlוכן הלאה) תחת ספריות המשנה המתאימות שלהם (solutions/<name>/, publishers/<name>/). הצבתם בבסיס המאגר מונעת זיהוי תבניות וגורמת לכלי SolutionPackager לחזור לתבנית XML – המייצרת שגיאה מטעה לגבי פריט חסר Customizations.xml. מידע נוסף: פתרון בעיות בכלי SolutionPackager

עיצוב זיהוי אוטומטי

SolutionPackager (ו- pac solution pack) מזהה באופן אוטומטי את התבנית באופן הבא:

תנאי תבנית שזוהתה התנהגות
solutions/*/solution.yml מצא — פתרון אחד יאמאל (YAML) שם הפתרון נגזר משם תיקיית המשנה
solutions/*/solution.yml נמצאו – פתרונות מרובים יאמאל (YAML) /SolutionName ארגומנט נדרש כדי לציין איזה פתרון יש לארוז
אין ספריית משנה solutions/ קיימת XML (דור קודם) Other\Solution.xml מצפה וOther\Customizations.xml

קבצי מניפסט

solution.yml

ממוקם בכתובת solutions/<SolutionUniqueName>/solution.yml. מכיל מטה-נתונים של פתרון ברמה העליונה - המקבילה solution.xml של YAML בתבנית XML.

שדות מפתח כוללים את השם, הגירסה, השם הידידותי, התיאור וההפניה הייחודיים של הפתרון למפרסם.

solutioncomponents.yml

ממוקם בכתובת solutions/<SolutionUniqueName>/solutioncomponents.yml. פירוט נתיבים יחסיים לכל קבצי הרכיבים הכלולים בפתרון זה. SolutionPackager מקריא קובץ זה במהלך ערכות לאיתור מקורות רכיבים.

קטע לדוגמה:

- Path: entities/account
- Path: entities/contact
- Path: canvasapps/myapp_<guid>
- Path: publishers/MyPublisher

rootcomponents.yml

ממוקם בכתובת solutions/<SolutionUniqueName>/rootcomponents.yml. פירוט הרכיבים ברמת הבסיס (בדרך כלל טבלאות ואובייקטים אחרים ברמה העליונה) השייכים לפתרון זה.

הערה

אם רכיב rootcomponents.yml מסוים מוצהר ב- אך קבצי המקור שלו חסרים מהתיקיה (לדוגמה, .msappcanvasapps/<name>/קובץ יישום בד ציור תחת ), SolutionPackager .zipפולט אזהרה ומשממיט רכיב זה מהאריזה . פעולת ה- Pack עדיין הושלמה בהצלחה עם קוד יציאה 0.

הצלחת ערכות אינה מבטיחה הצלחה ייבוא. solutioncomponents.yml אם מושמט נתיבי יחסי תלות נדרשים - entityrelationships/ כגון תיקיות ישויות אב או הגדרות קשר גומלין תחת - ערכות הפתרונות ללא שגיאה, אך נכשל בייבוא עם הודעה כגון: "חסרות הגדרות קשרי גומלין משויכת לתכונות". הקפד תמיד solutioncomponents.yml ל כולל את כל הישויות ו קשרי הגומלין התלויים, ולא רק את הישויות שבבעלות הפתרון.

missingdependencies.yml

ממוקם בכתובת solutions/<SolutionUniqueName>/missingdependencies.yml. מתעד יחסי תלות של פתרון שלא היו קיימים כאשר הפתרון יוצא לאחרונה. משמש למטרות מידע ולאימות ההשלמה בעת הייבוא.

publisher.yml

ממוקם בכתובת publishers/<PublisherUniqueName>/publisher.yml. מכיל את הגדרת המפרסם - שם ייחודי, שם תצוגה, קידומת התאמה אישית וקידומת ערך של אפשרות.

מבנה נדרש מינימלי:

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:

תמיכה בסוג רכיב

הטבלה הבאה מפרטת כיצד כל סוג רכיב מטופל בתבנית YAML.

סוג רכיב בתבנית YAML הערות
ישויות (טבלאות), תכונות, טפסים, תצוגות קבצי YAML מאוחסן כקבצי YAML בודדים לכל רכיב משנה
זרימות עבודה (קלאסי) קבצי YAML תחת workflows/
זרימות מודרניות (Power Automate ענן) ₪ — תבנית YAML בלבד תחת modernflows/; אינו נתמך בתבנית XML
יישומים מבוססי קנבס ₪ — תבנית YAML בלבד .msapp בינארי תחת canvasapps/<name>/; אינו נתמך בתבנית XML
הגדרות משתנה סביבה קבצי XML של תבניות קבצים .xml בודדים תחת environmentvariabledefinitions/
ערכי משתנה סביבה - קובץ JSON מאוחסן כ environment_variable_values.json
מחברים מותאמים אישית תחת connectors/
הרכבות תוסף שמות סוגים המלאים ממופים מחדש כברירת מחדל (/remapPluginTypeNames)
משאבי אינטרנט תחת webresources/
תפקידי אבטחה מאוחסן כ- XML באופן פנימי; מסונן לכל פתרון
ערכות אפשרויות (כללי) מאוחסן כ- XML; מסונן לכל פתרון
לוחות מחוונים מאוחסן כ- XML; מסונן לכל פתרון
מפות אתר מאוחסן כ- XML; מסונן לכל פתרון
התאמות אישיות של רצועת הכלים מאוחסן כ- XML; מסונן לכל פתרון
קשרי גומלין בין ישויות תחת entityrelationships/

הערה

רכיבים המאוחסנים כ- XML באופן פנימי עוברים המרה אוטומטית בין XML ל- YAML במהלך פעולות ארוזות ופרקה של אריזה. באפשרותך לערוך אותם כקבצי YAML; הכלי מטפל בהמרה.

מאגרים מרובי פתרונות

בסיס מאגר יחיד יכול להכיל פתרונות מרובים. כל הפתרונות משתפים את אותן תיקיות רכיבים; solutioncomponents.yml בכל פתרון קובע אילו נתיבי רכיבים שייכים לפתרון זה.

מבנה לדוגמה עם שני פתרונות:

<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/

אריזת פתרון ספציפי מתוך תיקיית ריבוי פתרונות

משתמש SolutionPackager.exe:

SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA

באמצעות pac solution pack (תיקיות של פתרון יחיד בלבד - עבור פתרון מרובה, השתמש ב- SolutionPackager.exe ישירות עם /SolutionName):

pac solution pack --zipfile SolutionA.zip --folder C:\repos\myrepo

הערה

בעת שימוש בשילוב Dataverse Git מקורי עם איגוד סביבה, כל הפתרונות בסביבה משתפים בסיס מאגר יחיד באמצעות הפריסה מרובת הפתרונות. בעת שימוש באיגוד פתרונות, ניתן לאגד כל פתרון לתיקיה נפרדת.

עבודה עם תיקיות עיצוב YAML

אריזת תיקיית YAML לתוך .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

השגת תיקיית YAML מלאה מ- Dataverse

הדרך המומלצת לקבלת תיקיית YAML מלאה וניתנת לעריכה היא להשתמש ב- pac solution clone:

pac solution clone --name MySolutionUniqueName --outputDirectory C:\repos\myrepo

פעולה זו מחלץ את הפתרון לתוך תבנית YAML, כולל כל קבצי המקור של הרכיב. לחלופין, השתמש בשילוב Git מקורי כדי לבצע מ- Power Apps — הקבצים המחויבים הם בתבנית YAML וניתן לארוז אותם באופן מלא.

אמת את התיקיה לפני האריזה

ודא שהתיקיה solutions/<name>/ קיימת וש כל הנתיבים בפתרון solutioncomponents.yml לקבצים בפועל. כל הנתיבים החסרים התוצאה היא אזהרות במהלך ערכות ורכיבים אלה מושמטים.

קשרי גומלין לשילוב Dataverse Git

תבנית בקרת המקור YAML היא התבנית ה קנונית המשמשת שילוב Dataverse Git. כאשר יצרנים מבצעים פתרונות Power Apps, הקבצים שנכתבו כדי Azure DevOps בתבנית זו. מפתחים הראשונים בקוד יכולים לעבוד עם אותו מאגר באמצעות כלי ה- CLI המתוארים כאן.

לקבלת מידע על חיבור בסביבות ל- Git, ראה הגדרת שילוב Dataverse Git.