הערה
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות להיכנס או לשנות מדריכי כתובות.
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות לשנות מדריכי כתובות.
SolutionPackager הוא כלי שיכול לפרק באופן הפיך קובץ פתרון דחוס של Microsoft Dataverse לקבצי XML מרובים ולקבצים אחרים. לאחר מכן תוכל לנהל בקלות קבצים אלה באמצעות מערכת בקרת מקור. הסעיפים הבאים מראים לך כיצד להפעיל את הכלי וכיצד להשתמש בכלי עם פתרונות מנוהלים ולא מנוהלים.
חשוב
הכלי SolutionPackager הוא כבר לא הדרך המומלצת לפרק ולארוז פתרונות. היכולות של הכלי SolutionPackager משולבות ב- CLI של Power Platform. הפקודה pac solution כוללת פעלים רבים כמו unpack, pack, clone ו-sync המיישמים את אותן יכולות בסיסיות של הכלי SolutionPackager.
היכן למצוא את הכלי SolutionPackager
הכלי SolutionPackager מופץ כחלק מחבילת Microsoft.CrmSdk.CoreTools NuGet . כדי להתקין את התוכנה, בצע את השלבים הבאים.
- הורד את חבילת NuGet.
- שנה את שם סיומת שם הקובץ של החבילה מ- .nupkg ל-zip.
- חלץ את התוכן של קובץ ה- zip הדחוס.
מצא את קובץ ההפעלה SolutionPackager.exe בתיקייה <extracted-folder-name>/contents/bin/coretools. הפעל את התוכנה מהתיקייה של coretools או הוסף את התיקיה ל-PATH שלך.
ארגומנטים של שורת הפקודה SolutionPackager
SolutionPackager הוא כלי שורת פקודה שניתן להפעיל עם הפרמטרים המזוהים בטבלה הבאה.
| ארגומנט | Description |
|---|---|
| /action: {Extract|Pack} | חובה. הפעולה שיש לבצע. הפעולה יכולה להיות חילוץ פתרון .zip קובץ לתיקיה, או אריזת תיקיה בקובץ .zip. |
| /zipfile: <נתיב קובץ> | חובה. הנתיב והשם של קובץ פתרון .zip. בעת חילוץ, הקובץ חייב להיות קיים וניתן לקריאה. בעת האריזה, הקובץ מוחלף. |
| /folder: <נתיב תיקיה> | חובה. הנתיב לתיקיה. בעת החילוץ, תיקיה זו נוצרת ומאוכלסת בקבצי רכיבים. בעת האריזה, תיקיה זו חייבת להיות קיימת כבר ולהכיל קבצי רכיבים שחולצו בעבר. |
| /packagetype: {לא מנוהל|מנוהל|שניהם} | אופציונלי. סוג החבילה לעיבוד. ערך ברירת המחדל הוא לא מנוהל. ארגומנט זה עשוי להיות מושמט ברוב המקרים מכיוון שניתן לקרוא את סוג החבילה מתוך קובץ .zip או קבצי רכיבים. בעת חילוץ והגדרת שניהם, קבצי .zip של פתרונות מנוהלים ולא מנוהלים חייבים להיות נוכחים ומעובדים לתוך תיקיה אחת. בעת אריזה, כאשר צוין Both, קבצי .zip של פתרונות מנוהלים ולא מנוהלים נוצרים מתיקיה אחת. לקבלת מידע נוסף, עיין בסעיף בנושא עבודה עם פתרונות מנוהלים ולא מנוהלים בהמשך מאמר זה. |
| /allowWrite:{Yes|לא} | אופציונלי. ערך ברירת המחדל הוא כן. ארגומנט זה משמש רק במהלך חילוץ. כאשר /allowWrite:No מצוין, הכלי מבצע את כל הפעולות, אך נמנע ממנו לכתוב או למחוק קבצים. ניתן להעריך בבטחה את פעולת החילוץ מבלי להחליף או למחוק קבצים קיימים. |
| /allowDelete:{כן|לא|הנחיה} | אופציונלי. ערך ברירת המחדל הוא הנחיה. ארגומנט זה משמש רק במהלך חילוץ. כאשר צוין /allowDelete:Yes, כל הקבצים שקיימים בתיקיה שצוינה על-ידי הפרמטר /folder אשר אינם צפויים נמחקים באופן אוטומטי. כאשר צוין /allowDelete:No, לא מתבצעות פעולות מחיקה. כאשר /allowDelete:Prompt מצוין, המשתמש מתבקש דרך המסוף לאפשר או לדחות את כל פעולות המחיקה. אם צוין /allowWrite:No, לא מתבצעות פעולות מחיקה אפילו אם צוין גם /allowDelete:Yes. |
| /clobber | אופציונלי. ארגומנט זה משמש רק במהלך חילוץ. כאשר /clobber מצוין, קבצים שהוגדרה להם התכונה לקריאה בלבד מוחלפים או נמחקים. כאשר לא צוין, קבצים עם התכונה לקריאה בלבד אינם מוחלפים או נמחקים. |
| /errorlevel: {Off|Error|Warning|Info|Verbose} | אופציונלי. ערך ברירת המחדל הוא Info. ארגומנט זה מציין את רמת מידע התיעוד שצריך להפיק. |
| /map: <נתיב קובץ> | אופציונלי. הנתיב והשם של קובץ .xml המכיל הוראות למיפוי קבצים. בעת שימוש במהלך חילוץ, קבצים הנקראים בדרך כלל מתוך התיקיה שצוינה על-ידי הפרמטר /folder נקראים ממיקומים חלופיים כפי שצוין בקובץ המיפוי. במהלך פעולת ערכות, קבצים התואמים להוראה אינם כתובים. |
| /nologo | אופציונלי. העלמת הכרזה בזמן ריצה. |
| /log: <נתיב קובץ> | אופציונלי. נתיב ושם לקובץ יומן רישום. אם הקובץ כבר קיים, פרטי רישום חדשים מצורפים לקובץ. |
| נתיב קובץ @ <> | אופציונלי. נתיב ושם לקובץ המכיל ארגומנטים של שורת הפקודה עבור הכלי. |
| /sourceLoc: <מחרוזת> | אופציונלי. ארגומנט זה יוצר קובץ משאבי תבנית, והוא תקף רק בעת חילוץ. הערכים האפשריים הם auto קוד LCID/ISO עבור השפה שברצונך לייצא. כאשר נעשה שימוש בארגומנט זה, משאבי המחרוזת מהאזור הנתון מחולצים כקובץ .resx ניטרלי. אם auto או רק הצורה הארוכה או הקצרה של המפסק מצוינת, נעשה שימוש באזור הבסיס או בפתרון. ניתן להשתמש בצורה המקוצרת של הפקודה: /src. |
| /התאמה מקומית | אופציונלי. חילוץ או מיזוג של כל משאבי המחרוזת לקבצי .resx אתה יכול להשתמש בצורה המקוצרת של הפקודה: /loc. אפשרות ההתאמה לשפות אחרות תומכת ברכיבים משותפים עבור קבצי .resx. מידע נוסף: שימוש במשאבי אינטרנט של RESX |
| /שם_הפתרון: <name> | אופציונלי. השם הייחודי של הפתרון לאחסון או חילוץ כאשר תיקיית המקור מכילה פתרונות מרובים תחת solutions/*/solution.yml. נדרש כאשר זוהה יותר מפתרון אחד. חל רק על תבנית בקרת המקור YAML. באפשרותך להשתמש בתבנית הקצרה של הפקודה: /sn. |
| /remapPluginTypeNames | אופציונלי. כשמציינים אותם, שמות הסוגים המלאים של התוסף ממופים מחדש בהתבסס על המכלולים הכלולים בפתרון. זמין כברירת מחדל בתבנית בקרת מקור של YAML. באפשרותך להשתמש בתבנית הקצרה של הפקודה: /fp. |
תבניות קובץ של בקרת מקור
SolutionPackager תומך בשתי פריסות תיקיה בעת חילוץ ואזהה של פתרונות.
תבנית XML (דור קודם)
התבנית המקורית. המטה-נתונים של הפתרון מאוחסנים ב Other\Solution.xmlOther\Customizations.xml- ו- , וכל קבצי הרכיבים מחולצים לתוך הירארכיית תיקיות שטוחה לצד קבצים אלה. תבנית זו היא תבנית ברירת המחדל בעת חילוץ קובץ .zip ללא קביעת תצורה נוספת.
תבנית בקרת מקור YAML
תבנית זו, שהוצגה לצד שילוב Dataverse Git, מאחסנה מטה-נתונים של פתרון כקבצי YAML המופצים בהירארכיית תיקיות מובנית. זו התבנית שנכתבה כאשר אתה מבצע פתרונות באמצעות שילוב Git מקורי ב- Power Apps.
יתרונות על-פני תבנית XML
- יצירת הבדלים נקיים יותר, קריאים יותר ברמת רכיב בכלי ניהול גרסאות
- תמיכה בפתרונות מרובים בתיקיה אחת של מאגר
- קבצי אפליקציות
.msappCanvas ותזרימות מודרניות נתמכים בתבנית זו בלבד - מיפוי מחדש של שם סוג התוסף מופעל כברירת מחדל
מבנה תיקיה נדרש
<rootFolder>/
├── solutions/
│ └── <SolutionUniqueName>/
│ ├── solution.yml (solution metadata)
│ ├── solutioncomponents.yml (paths to all component files)
│ ├── rootcomponents.yml (root-level components)
│ └── missingdependencies.yml (dependency info)
├── publishers/
│ └── <PublisherUniqueName>/
│ └── publisher.yml (publisher definition)
├── entities/ (entity components, if present)
├── workflows/ (classic workflows, if present)
├── modernflows/ (Power Automate cloud flows, if present)
├── canvasapps/ (canvas app .msapp files, if present)
└── [other component folders]/
חשוב
תבנית YAML מוגנת באופן אוטומטי על-ידי הנוכחות של solutions/ תיקיית משנה המכילה *solution.yml קבצים.
אם קבצי מניפסט YAML שלך (solution.yml, solutioncomponents.yml, וכן הלאה) solutions/<SolutionUniqueName>/ממוקמים בבסיס התיקיה ולא תחת , הכלי אינו מזהה את תבנית YAML. הכלי חוזר לנתיב ה-XML ומדווח על שגיאה מטעה לגבי Customizations.xml חסר. ראה פתרון בעיות לקבלת מידע אודות פתרון בעיה זו.
מידע נוסף: הפניה לפורמט בקרת גרסאות ב-YAML של פתרון
עיצוב כללי זיהוי אוטומטי
| תנאי | תבנית בשימוש |
|---|---|
solutions/*/solution.yml למצוא – פתרון אחד בדיוק |
תבנית YAML, שבה שם הפתרון נגזר מהתיקיה |
solutions/*/solution.yml נמצאו – פתרונות מרובים |
תבנית YAML, שבה /SolutionName נדרש הארגומנט |
אין ספריית משנה solutions/ קיימת |
תבנית XML (דור קודם) |
אריזת תיקיית תבנית YAML
הפקודה הבאה ערכות תיקיית תבנית YAML.
SolutionPackager.exe /action:Pack /zipfile:MySolution.zip /folder:C:\repos\myrepo
אריזה מתוך תיקיית ריבוי פתרונות
הפקודה הבאה אורזת פתרון שצוין בתיקייה מרובת פתרונות.
SolutionPackager.exe /action:Pack /zipfile:SolutionA.zip /folder:C:\repos\myrepo /SolutionName:SolutionA
שימוש בארגומנט הפקודה /map
הדיון הבא מפרט את השימוש בארגומנט /map בכלי SolutionPackager.
קבצים הבנויים במערכת בנייה אוטומטית, כגון קבצי Silverlight מסוג .xap והכללות של יישומי Plug-in, אינם מוכנסים בדרך כלל לבקרת מקור. ייתכן שמשאבי אינטרנט כבר יהיו קיימים בבקרת מקור במיקומים שאינם תואמים ישירות לכלי SolutionPackager. על-ידי הכללת הפרמטר /map, ניתן לכוון את הכלי SolutionPackager לקרוא ולארוז קבצים כאלה ממיקומים חלופיים ולא מתוך התיקיה Extract כפי שנעשה בדרך כלל. הפרמטר /map חייב לציין את השם והנתיב לקובץ XML המכיל הנחיות מיפוי. הנחיות אלו מורה ל- SolutionPackager להתאים קבצים לפי שמם והנתיב שלהם, ולציין את המיקום החלופי כדי למצוא את הקובץ המותאם. המידע הבא חל על כל ההוראות באופן שווה.
ניתן לפרט הוראות מרובות, כוללות הוראות שמתאימות קבצים זהים. ההוראות המפורטות בתחילת הקובץ מקבלות עדיפות על-פני ההוראות המפורטות לאחר מכן.
אם קובץ מותאם לפקודה כלשהי, יש למצוא אותו במיקום חלופי אחד לפחות. אם לא נמצאו חלופות תואמות, SolutionPackager מפיק שגיאה.
נתיבי תיקיות וקבצים עשויים להיות מוחלטים או יחסיים. נתיבים יחסיים מוערכים תמיד מהתיקייה שצוינה על-ידי הפרמטר /folder.
ניתן לציין משתני סביבה באמצעות תחביר %variable%.
תו כללי של תיקיה "**" עשוי לשמש כדי לציין "בכל תיקיית משנה כלשהי". ניתן להשתמש בו רק כחלק הסופי של נתיב, לדוגמה: "c:\folderA\**".
ניתן להשתמש בתווים כלליים של שמות קבצים רק בטפסים "*.ext" או "*.*". אין דפוס אחר נתמך.
שלושת סוגי מיפויי ההוראות מתוארים כאן, יחד עם דוגמה שמראה לך כיצד להשתמש בהם.
מיפוי תיקיות
המידע הבא מספק מידע מפורט על מיפוי תיקיות.
תבנית Xml
<Folder map="folderA" to="folderB" />
תיאור
נתיבי קבצים התואמים ל- "folderA" יוחלפו ל- "folderB".
הירארכיית תיקיות המשנה מתחת לכל תיקיה חייבת להתאים באופן מדויק.
אין תמיכה בתווים כלליים עבור תיקיות.
לא ניתן לציין שמות קבצים.
דוגמאות
<Folder map="folderA" to="folderB" /> <Folder map="folderA\folderB" to="..\..\folderC\" /> <Folder map="WebResources\subFolder" to="%base%\WebResources" />
מיפוי קובץ לקובץ
המידע שלהלן מספק פרטים נוספים על מיפוי קובץ לקובץ.
תבנית Xml
<FileToFile map="path\filename.ext" to="path\filename.ext" />
תיאור
כל קובץ שמתאים לפרמטר map נקרא מהשם והנתיב שצוינו בפרמטר to.
map לפרמטר:
יש לציין שם קובץ. הנתיב הוא אופציונלי. אם לא צוין נתיב, ייתכן שקבצים מכל תיקיה יתאימו.
אין תמיכה בתווים כלליים עבור שמות קבצים.
קיימת תמיכה בתווים כלליים עבור תיקיות.
toלפרמטר:יש לציין שם קובץ ונתיב.
שם הקובץ עשוי להיות שונה מהשם בפרמטר
map.אין תמיכה בתווים כלליים עבור שמות קבצים.
קיימת תמיכה בתווים כלליים עבור תיקיות.
דוגמאות
<FileToFile map="assembly.dll" to="c:\path\folder\assembly.dll" />
<FileToFile map="PluginAssemblies\**\this.dll" to="..\..\Plugins\**\that.dll" />
<FileToFile map="Webresrouces\ardvark.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\aardvark.jpg" />
<FileToFile
map="pluginpackages\cr886_PluginPackageTest\package\cr886_PluginPackageTest.nupkg"
to="myplg\bin\Debug\myplg.1.0.0.nupkg" />
בדוגמה של חבילת NuGet, cr886_PluginPackageTest.nupkg אינו מוחלף אם הקובץ כבר קיים במיקום שצוין.
מיפוי קובץ לנתיב
להלן מידע מפורט על מיפוי קובץ לנתיב.
תבנית Xml
<FileToPath map="path\filename.ext" to="path" />
תיאור
כל קובץ התואם לפרמטר map נקרא מהנתיב שצוין בפרמטר to .
map לפרמטר:
יש לציין שם קובץ. הנתיב הוא אופציונלי. אם לא צוין נתיב, ייתכן שקבצים מכל תיקיה יתאימו.
תווי כלל עבור שמות קבצים נתמכים.
קיימת תמיכה בתווים כלליים עבור תיקיות.
to לפרמטר:
יש לציין נתיב.
קיימת תמיכה בתווים כלליים עבור תיקיות.
אין לציין שם קובץ.
דוגמאות
<FileToPath map="assembly.dll" to="c:\path\folder" />
<FileToPath map="PluginAssemblies\**\this.dll" to="..\..\Plugins\bin\**" />
<FileToPath map="*.jpg" to="%SRCBASE%\CrmPackage\WebResources\JPG format\" />
<FileToPath map="*.*" to="..\..\%ARCH%\%TYPE%\drop" />
מיפוי לדוגמה
דוגמת קוד ה- XML הבאה מציגה קובץ מיפוי שלם המאפשר לכלי SolutionPackager לקרוא כל משאב אינטרנט ואת שתי ההרכבות שנוצרו כברירת מחדל מפרוייקט ערכת כלים למפתחים בשם CRMDevTookitSample.
<?xml version="1.0" encoding="utf-8"?>
<Mapping>
<!-- Match specific named files to an alternate folder -->
<FileToFile map="CRMDevTookitSamplePlugins.dll" to="..\..\Plugins\bin\**\CRMDevTookitSample.plugins.dll" />
<FileToFile map="CRMDevTookitSampleWorkflow.dll" to="..\..\Workflow\bin\**\CRMDevTookitSample.Workflow.dll" />
<!-- Match any file in and under WebResources to an alternate set of subfolders -->
<FileToPath map="WebResources\*.*" to="..\..\CrmPackage\WebResources\**" />
<FileToPath map="WebResources\**\*.*" to="..\..\CrmPackage\WebResources\**" />
</Mapping>
פתרונות מנוהלים ופתרונות לא מנוהלים
ניתן לייצא קובץ פתרון דחוס (.zip) של Dataverse באחד משני סוגים, כמוצג כאן.
פתרון מנוהל
פתרון שהושלם ומוכן לייבוא לארגון. לאחר הייבוא, לא ניתן להוסיף או להסיר רכיבים, על אף שלאופציתם ניתן לאפשר התאמה אישית נוספת. פעולה זו מומלצת לאחר השלמת פיתוח הפתרון.
פתרון לא מנוהל
פתרון פתוח ללא הגבלות על מה שניתן להוסיף, להסיר או לשנות. זה מומלץ במהלך פיתוח פתרון.
התבנית של קובץ פתרון דחוס תהיה שונה בהתאם לסוגו, מנוהל או לא מנוהל. SolutionPackager יכול לעבד קבצי פתרון דחוסים מכל סוג. עם זאת, לכלי אין אפשרות להמיר סוג אחד לסוג אחר. הדרך היחידה להמיר קבצי פתרונות לסוג אחר – לדוגמה, מפתרון לא מנוהל לפתרון מנוהל – היא לייבא את קובץ ה- .zip של הפתרון הלא מנוהל לתוך שרת של Dataverse ולאחר מכן לייצא את הפתרון כפתרון מנוהל.
ה- SolutionPackager יכול לעבד קבצי .zip של פתרונות לא מנוהלים ומנוהלים כערכה משולבת באמצעות הפרמטר /PackageType:Both. כדי לבצע פעולה זו, יש צורך לייצא את הפתרון שלך פעמיים מכל סוג, תוך מתן שמות לקבצי .zip באופן הבא.
קובץ .zip לא מנוהל: AnyName.zip
קובץ .zip מנוהל: AnyName_managed.zip
הכלי יניח את הנוכחות של קובץ ה- zip המנוהל באותה תיקיה שבה נמצא הקובץ הלא מנוהל ויחלץ את שני הקבצים לתיקיה אחת תוך שמירה על ההבדלים בין רכיבים מנוהלים ולא מנוהלים.
לאחר חילוץ פתרון כלא מנוהל ומנוהל, ניתן לארוז מתיקיה בודדת זו את שניהם, או כל סוג בנפרד, באמצעות הפרמטר /PackageType כדי לציין איזה סוג ליצור. אם שני הקבצים צוינו, ייווצרו שני קבצי .zip באמצעות המוסכמה למתן שמות המתוארת לעיל. אם הפרמטר /PackageType חסר בעת אריזה מתיקיה כפולה מנוהלת ולא מנוהלת, ברירת המחדל היא להפיק קובץ .zip לא מנוהל יחיד.
פתרון בעיות
ההודעה מוצגת בעת Visual Studio לעריכת קבצי משאבים
אם אתה משתמש ב- Visual Studio כדי לערוך fsiles של משאבים שנוצרו על-ידי אריזת הפתרונות, ייתכן שתקבל הודעה כאשר תפרק מחדש את החבילה כך: "Failed to determine version id of the resource file <filename>.resx the resource file must be exported from the solutionpackager.exe tool in order to be used as part of the pack process." דבר זה קורה מכיוון ש- Visual Studio מחליף את תגי המטה-נתונים של קובץ המשאב בתגי נתונים.
פתרון
פתח את קובץ המשאבים בעורך הטקסט המועדף עליך ואתר ועדכן את התגיות הבאות:
<data name="Source LCID" xml:space="preserve"> <data name="Source file" xml:space="preserve"> <data name="Source package type" xml:space="preserve"> <data name="SolutionPackager Version" mimetype="application/x-microsoft.net.object.binary.base64">שנה את שם הצומת מ
<data>- ל-<metadata>.לדוגמה, מחרוזת זו:
<data name="Source LCID" xml:space="preserve"> <value>1033</value> </data>שינויים ב:
<metadata name="Source LCID" xml:space="preserve"> <value>1033</value> </metadata>זה מאפשר לאורז הפתרונות לקרוא ולייבא את קובץ המשאבים. בעיה זו נצפתה רק בעת שימוש בעורך המשאבים של Visual Studio.
שגיאה: "אין אפשרות למצוא את הקובץ הדרוש ...\Other\Customizations.xml" עם תיקיית YAML
שגיאה זו מופיעה בעת הפעלת SolutionPackager ( pac solution packאו ) מול תיקיה המכילה קבצי YAML solution.ymlכגון , solutions/<SolutionUniqueName>/ אך קבצים אלה ממוקמים בבסיס התיקיה ולא בתוך תיקיית המשנה הנדרשת.
לגרום: הכלי מזהה את תבנית בקרת המקור של YAML על-ידי חיפוש solutions/ תיקיית משנה המכילה *solution.yml קבצים. כאשר מדריך כתובות זה חסר, הכלי חוזר באופן שקט לתבנית ה- XML (דור קודם) ומצפה ל Other\Customizations.xml- . הודעת השגיאה המתבצעת מתייחסת לקובץ XML שאינה מציינת את YAML, אשר מטעה.
לתקן: ארגן מחדש את התיקיה כך שקבצי המניפסט של YAML נמצאים תחת הנתיבים הנכונים:
<rootFolder>/
solutions/<YourSolutionUniqueName>/ ← move solution.yml here
solution.yml
solutioncomponents.yml
rootcomponents.yml
missingdependencies.yml
publishers/<YourPublisherUniqueName>/
publisher.yml
אם השגת את התיקיה מביצוע שילוב Git pac solution cloneאו , מבנה התיקיות אמור להיות כבר נכון. תיקיה המכילה רק את קבצי YAML solutions/ ברמה העליונה ללא ספריית המשנה מייצגת חילוץ לא שלם ולא ניתן לארוז אותו ישירות.
אזהרה: לרכיב שהוצהר rootcomponents.yml אין קבצי מקור
אזהרה זו מופיעה כאשר רכיב, כגון יישום בד ציור, מופיע rootcomponents.yml , אך לא קיימים קבצי מקור תואמים בתיקיה הצפויה של הרכיבים (לדוגמה, canvasapps/<schema-name>/).
אפקט: הכלי עדיין מצליח (קוד יציאה 0) .zip ומפיק קובץ חוקי, אך הרכיב המוצהר מושמט מהפתרון החבילה.
לגרום: התיקיה הופקה על-ידי חילוץ חלקי, או שקבצי המקור של הרכיב לא נכללו במאגר. לדוגמה, רק קבצי מניפסט הפתרון נוספו ולא יישום בד הציור עצמו.
לתקן: ודא שכל הרכיבים שהוצהרת ב rootcomponents.yml - כוללים קבצי מקור תואמים בתיקיה. עבור יישומי בד ציור, הקובץ .msapp חייב להיות תחת canvasapps/<schema-name>/. אם חסרים קבצים, ייצא מחדש את הפתרון המלא מתוך Dataverse ופרוק אותו שוב, או השתמש ב-pac solution clone כדי להשיג חילוץ מלא.