ניהול עדכוני יחסי תלות בפרוייקט .NET
במוקדם או במאוחר, ברצונך לעדכן לגירסה חדשה של ספריה. ייתכן שפונקציה מסומנת כלא נמצאת עוד בשימוש, או אולי קיימת תכונה חדשה בגירסה מתקדמת יותר של חבילה שבה אתה משתמש.
קח בחשבון שיקולים אלה לפני שתנסה לעדכן ספריה:
- סוג עדכון: איזה סוג עדכון זמין? האם זהו תיקון באגים קטן? האם היא מוסיפה תכונה חדשה שאתה צריך? האם זה שובר את הקוד שלך? באפשרותך להעביר את סוג העדכון באמצעות מערכת הנקראת גירסאות סמנטיות. האופן שבו מספר הגירסה של הספריה מבוטא מקשר למפתחים את סוג העדכון שבו הם עוסקים.
- אם תצורת הפרוייקט נקבעה כראוי: באפשרותך לקבוע את התצורה של פרוייקט .NET כך שתוכל לקבל רק את סוגי העדכונים הרצויים. עליך לבצע עדכון רק אם קיים סוג מסוים של עדכון זמין. אנו ממליצים על גישה זו, מכיוון שאינך מסתכן בהפתעות.
- אבטחה: ניהול יחסי התלות של הפרוייקט לאורך זמן כרוך במודעות לבעיות שעלולות להתרחש. בעיות מתרחשות כאשר מזוהות פגיעויות, לדוגמה. באופן אידיאלי, תיקונים מופצים שבאפשרותך להוריד. הכלי .NET Core עוזר לך להפעיל ביקורת בספריות שלך כדי לברר אם יש לך חבילות שיש לעדכן. הוא גם עוזר לך לבצע את הפעולה המתאימה כדי לפתור בעיה.
שימוש ניהול גירסאות סמנטי
קיים תקן תעשייה הנקרא גירסאות סמנטיות, שהוא האופן שבו אתה מבטא את סוג השינוי שאתה או מפתח אחר מבואים לספריה. ניהול גירסאות סמנטי פועל על-ידי הבטחה שלחבילה יש מספר גירסה ושמספר הגירסה מחולק למקטעים אלה:
-
גירסה ראשית: המספר הימני ביותר. לדוגמה, זהו
1ב-1.0.0. שינוי במספר זה פירושו שאתה יכול לצפות ל"שבירת שינויים" בקוד שלך. ייתכן שיהיה עליך לשכתב חלק מהקוד שלך. -
המשנית: המספר האמצעי. לדוגמה, זהו
2ב-1.2.0. שינוי במספר זה פירושו שנוספו תכונות. הקוד שלך אמור עדיין לפעול. בדרך כלל בטוח לקבל את העדכון. -
גירסת: המספר הימני ביותר. לדוגמה, זהו
3ב-1.2.3. שינוי במספר זה פירושו שהוחל שינוי שפותר משהו בקוד שאמור לפעול. יהיה בטוח לקבל את העדכון.
טבלה זו מדגימה כיצד מספר הגירסה משתנה עבור כל סוג גירסה:
| סוג | מה קורה |
|---|---|
| גירסה ראשית |
1.0.0 שינויים 2.0.0 |
| גירסה משנית |
1.1.1 שינויים 1.2.0 |
| גירסת תיקון |
1.0.1 שינויים 1.0.2 |
חברות ומפתחים רבים משתמשים במערכת זו. אם בכוונתך לפרסם חבילות ודחף אותן לרישום NuGet, אתה צפוי לעקוב אחר ניהול גירסאות סמנטי. גם אם אתה מוריד חבילות רק מרישום NuGet, תוכל לצפות מחבילות אלה לעקוב אחר ניהול גירסאות סמנטי.
שינויים בחבילה עלולים לגרום לסיכון, כולל הסיכון שבאג יפגע בעסק שלך. סיכונים מסוימים עשויים לדרוש ממך לשכתב חלק מהקוד שלך. שכתוב קוד דורש זמן ועלויות כספיות.
גישה לעדכון
כמפתח .NET, באפשרותך להעביר את אופן הפעולה של העדכון שברצונך להעביר ל- .NET. חשוב על עדכון במונחים של סיכון. להלן כמה גישות:
- גירסה: אין לי בעיות בעדכון לגירסה הראשית העדכנית ביותר ברגע שהיא תפוג. אני מקבל את העובדה שאולי אני צריך לשנות קוד בצד שלי.
- גירסה: אני בסדר עם תכונה חדשה שנוספת. אני לא בסדר עם קוד שמשבר.
- גירסת: העדכונים היחידים שאני בסדר איתם הם תיקוני באגים.
אם אתה מנהל פרוייקט .NET חדש או קטן יותר, אתה יכול להרשות לעצמך להיות משוחרר לגבי האופן שבו אתה מגדיר את אסטרטגיית העדכון. לדוגמה, תמיד תוכל לעדכן לגירסה העדכנית ביותר. עבור פרוייקטים מורכבים יותר, יש יותר נואנס, אבל אנחנו נחסוך את זה למודול עתידי.
באופן כללי, ככל שהיתלות שאתה מעדכן קטנה יותר, ככל שיש פחות יחסי תלות בתהליך, כך קל יותר לבצע את תהליך העדכון.
קביעת התצורה של קובץ הפרוייקט לעדכון
כאשר אתה מוסיף תלות אחת או יותר, קבע את התצורה של קובץ הפרוייקט כך שתוכל לקבל אופן פעולה צפוי בעת שחזור, בניית או הפעלה של הפרוייקט. באפשרותך להודיע על הגישה שברצונך לקבל עבור חבילה. NuGet כולל את המושגים של גירסאות של וגירסאות צפות.
טווחי גירסאות הם סימן מיוחד שניתן להשתמש בו כדי לציין טווח ספציפי של גירסאות שברצונך לפתור.
| בסימון | כלל שהוחל | תיאור |
|---|---|---|
1.0 |
x >= 1.0 | גירסה מינימלית, כולל |
(1.0,) |
x > 1.0 | גירסה מינימלית, בלעדית |
[1.0] |
x == 1.0 | התאמת גירסה מדויקת |
(,1.0] |
x ≤ 1.0 | גירסה מרבית, כולל |
(,1.0) |
x < 1.0 | גירסה מרבית, לא כולל |
[1.0,2.0] |
1.0 ≤ x ≤ 2.0 | הטווח המדויק, כולל |
(1.0,2.0) |
1.0 < x < 2.0 | טווח מדויק, בלעדי |
[1.0,2.0) |
1.0 ≤ x < 2.0 | גירסה מקסימלית מינימלית ותחרגת משולבת |
(1.0) |
לא חוקי | לא חוקי |
NuGet תומך גם בשימוש בסיומי גירסה צפים עבור חלקים ראשיים, משניים, תיקונים וסיומת קדם-הפצה של המספר. סימן זה הוא כוכבית (*). לדוגמה, מפרט הגירסה 6.0.* מציין "השתמש בגירסה העדכנית ביותר של 6.0.x". בדוגמה אחרת, 4.* פירושו "השתמש בגירסה העדכנית ביותר של 4.x". שימוש בגירסה צפה מקטין את השינויים בקובץ הפרוייקט תוך שמירה על עדכניות בגירסה העדכנית ביותר של תלות.
הערה
אנו ממליצים להתקין גירסה ספציפית במקום להשתמש בכל אחד מההודעות הצפים. התקנת גירסה ספציפית מבטיחה שניתן לחזור על גירסאות ה- Build שלך, אלא אם תבקש באופן מפורש עדכון תלותי.
כאשר אתה משתמש בגירסה צפה, NuGet פותר את הגירסה העדכנית ביותר של חבילה התואמת לתבנית הגירסה. בדוגמה הבאה, 6.0.* מקבל את הגירסה העדכנית ביותר של חבילה המתחילה ב- 6.0. גירסה זו היא 6.0.1.
להלן כמה דוגמאות שניתן לקבוע את תצורתן עבור גירסה ראשית, גירסת משנית או גירסת תיקון:
<!-- Accepts any version 6.1 and later. -->
<PackageReference Include="ExamplePackage" Version="6.1" />
<!-- Accepts any 6.x.y version. -->
<PackageReference Include="ExamplePackage" Version="6.*" />
<PackageReference Include="ExamplePackage" Version="[6,7)" />
<!-- Accepts any later version, but not including 4.1.3. Could be
used to guarantee a dependency with a specific bug fix. -->
<PackageReference Include="ExamplePackage" Version="(4.1.3,)" />
<!-- Accepts any version earlier than 5.x, which might be used to prevent pulling in a later
version of a dependency that changed its interface. However, we don't recommend this form because determining the earliest version can be difficult. -->
<PackageReference Include="ExamplePackage" Version="(,5.0)" />
<!-- Accepts any 1.x or 2.x version, but not 0.x or 3.x and later. -->
<PackageReference Include="ExamplePackage" Version="[1,3)" />
<!-- Accepts 1.3.2 up to 1.4.x, but not 1.5 and later. -->
<PackageReference Include="ExamplePackage" Version="[1.3.2,1.5)" />
חיפוש ועדכון של חבילות לא מעודכנות
הפקודה dotnet list package --outdated מפרטת חבילות לא מעודכנות. פקודה זו יכולה לעזור לך ללמוד מתי גירסאות חדשות יותר של חבילות זמינות. להלן פלט אופייני מהפקודה:
Top-level Package Requested Resolved Latest
> Humanizer 2.7.* 2.7.9 2.8.26
להלן המשמעויות של שמות העמודות בפלט:
-
Requested: טווח הגירסה או הגירסה שציינת. -
Resolved: הגירסה שהורדת בפועל עבור הפרוייקט התואמת לגירסה שצוינה. -
Latest: הגירסה העדכנית ביותר הזמינה לעדכון מ- NuGet.
זרימת העבודה המומלצת היא להפעיל את הפקודות הבאות, בסדר זה:
- הפעל את
dotnet list package --outdated. פקודה זו מפרטת את כל החבילות המיושן. הוא מספק מידע בעמודותRequested,Resolved,Latestנוספות. - הפעל את
dotnet add package <package name>. אם אתה מפעיל פקודה זו, היא מנסה לעדכן לגירסה העדכנית ביותר. באופן אופציונלי, באפשרותך להעביר--version=<version number/range>.