PracticU

עבודה עם מספר פרויקטים
Multiple Projects - DLL

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › עבודה עם מספר פרויקטים Multiple Projects - DLL
מילון מושגים:
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
תבנית - מבנה בסיסי מוכן שממנו יוצרים פריטים דומים, כמו תבנית עמוד או תבנית מסמך.
CSS - שפת עיצוב שקובעת את המראה של דפי אינטרנט: צבעים, גופנים, מיקום וסידור הרכיבים.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
GUI - ממשק משתמש גרפי: ממשק מבוסס חלונות, אייקונים וכפתורים, בניגוד לשורת פקודה טקסטואלית.
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.

עבודה עם מספר פרויקטים Multiple Projects - DLL
מהו פרויקט ומהו Solution ב-Visual Studio, איך מחברים כמה פרויקטים באותה מערכת, ואיך משתמשים בקוד מפרויקט אחד בתוך אחר.
השלבים העיקריים
1. פרויקט הוא תבנית קבצים: גם קובץ אחד שמדפיס Hello נחשב פרויקט. הרשימה בחלון יצירת פרויקט היא תבניות. ASP.NET Core Web App מביא קבצי CSS ו-JavaScript וספריות וכשמריצים (Ctrl+F5) נפתח אתר דמו. Windows Forms Application הוא תוכנה חלונאית ולא אתר.
2. Solution: מכל לפרויקטים. כשיש מערכת עם כמה פרויקטים, לא מסמנים Place solution and project in the same directory. קוראים ל-Solution בשם המערכת כולה, למשל TicTacToe. פרויקטים שלא קשורים למערכת, כמו חנות חיות, לא נכנסים אליו.
3. הוספת פרויקטים: ברמת ה-Solution, Add > New Project. בדוגמה: TicTacToe.GUI (Windows Forms) לממשק, אתר ASP.NET Core Web App לפרסום המשחק, ו-Class Library בשם TicTacToe.Logic לחישובים הלוגיים.
4. Class Library: פרויקט שמכיל קוד בלבד (DLL, Dynamic Link Library) ושכל פרויקט יכול להשתמש בו. הוסיפו גם GeneralUtilities לעזרים כלליים שאפשר לצרף לפרויקטים עתידיים, למשל חנות קוסמטיקה.
5. הדוגמה: במחלקה NumericHelper יש פונקציה סטטית IsInt שמנסה int.Parse על מחרוזת ומחזירה true אם הצליח ו-false אם הייתה שגיאה.
6. שימוש בפרויקט אחר: פרויקטים באותו Solution לא מכירים זה את זה אוטומטית. ב-Dependencies של הפרויקט בוחרים Add Project Reference ומסמנים את GeneralUtilities. אחרי זה המחלקה מוכרת (ואם צריך מוסיפים using).
7. בדיקה: לחצן בטופס (Windows Forms) קורא ל-IsInt ומציג הודעה. "123" הוא מספר שלם, "123abc" ו-"123.5" לא.
איזה פרויקט רץ
הפרויקט המודגש בשם הוא זה שרץ בהרצה. כדי לשנות לוחצים לחיצה ימנית על פרויקט אחר ו-Set as Startup Project.
אחרי ההרצאה תוכלו לבנות Solution עם כמה פרויקטים, לחבר ביניהם ולבחור איזה מהם יופעל.
השיעור הבא בקורס: עבודה עם NuGet להתקנת ספריות

פרקי ההרצאה: עבודה עם מספר פרויקטים Multiple Projects - DLL

  1. 00:00

    מהו פרויקט בסביבת הפיתוח

  2. 00:54

    יצירת אתר ASP.NET Core Web App

  3. 02:05

    יצירת פרויקט Windows Forms

  4. 03:20

    מושג ה-Solution המאגד פרויקטים

  5. 05:45

    הוספת פרויקט חדש ל-Solution

  6. 07:22

    יצירת Class Library מסוג DLL

  7. 08:38

    בניית DLL של עזרים כלליים

  8. 09:51

    שימוש בפרויקט אחד מתוך אחר

תמלול ההרצאה: עבודה עם מספר פרויקטים Multiple Projects - DLL

הטקסט המלא של הדקות הראשונות בהרצאה «עבודה עם מספר פרויקטים Multiple Projects - DLL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:17

    זה יכול להיות נכון, אבל מבחינת וויז'ואל סטודיו וגם מבחינת סביבות פיתוח אחרות, קודם כל כשאנחנו רוצים לפתח משהו אנחנו צריכים לבנות את הקונספט של פרויקט.

  3. 00:28

    אפילו שיש בו רק קובץ אחד ויחיד, שאני מדפיס רק בקובץ הזה שורה אחת שמדפיסה לי הלו על המסך. זה עדיין נחשב project או project מבחינת סביבת הפיתוח.

  4. 00:42

    כל הרשימה הזאת שמופיעה פה זה פשוט טמפלייטים לפרויקטים שמכילים סדרה ספציפית של קבצים שסביר להניח שאנחנו נצטרך עבור הפרויקטים האלה.

  5. 00:53

    לדוגמה אם אנחנו רוצים לבנות אתר אינטרנט בואו נבחר קודם כל פה את c-sharp ובואו נבחר כאן web אולי והנה אנחנו רואים sp.net core web app זה אפליקציה זה בעצם מקביל לאתר אינטרנט אם אנחנו פותחים את זה ואומרים לו next הוא נותן לנו פה עוד כל מיני הגדרות של שם הפרויקט לדוגמה בואו נגיד שאנחנו בונים אני מעל

  6. 01:19

    ואני אומר לו נקסט, משאיר את הדיפולט, נקסט וויז'ואל סטודיו פותחת לנו איזשהו פרויקט כמובן, בואו נסתכל על סולושן אקספלורר ושימו לב יש פה לא מעט קבצים מוכנים ששייכים לאותה מערכת של אתר אינטרנט, יש לנו פה את הקבצי צו וקבצי ג'אווה סקריפט וספריות נוספות, ממש תבנית שכנראה אני אצטרך בשביל לבנות מערכת

  7. 01:49

    שהיא אתר אינטרנט. אפשר לסגור פה את ה-Welcome Page, אם אנחנו כרגע נריץ את זה בעזרת קונטור 05, נפתח לנו האתר אינטרנט, אנחנו יכולים לראות שזה פשוט דמו של איזשהו אתר שהיה בקבצים האלה.

  8. 02:05

    בואו נבצע סגירה ונחפש פרויקט אחר, נלך לכאן ונפתח משהו אחר לגמרי, בואו ננסה לפתוח, נוריד רגע את ה-Web ונחפש in a desktop ובואו ניקח את Windows Forms Application זה בעצם תוכנה חלונאית בואו נניח שאנחנו בונים איזשהו משחק איזשהו משחק שהוא תוכנה חלונאית שאנחנו מתקינים ומה שאנחנו רואים שנפתח לנו זה בעצם

  9. 02:34

    פרויקט שמכיל קבצים שמאפשרים לייצר תוכנה חלונאית אם אם אנחנו עכשיו מריצים את זה על ידי קונטרול F5 נפתח לנו פורם שאנחנו יכולים להגדיל אותו שהוא יתפוס לנו את כל המסך.

  10. 02:52

    כמובן שיש פה טכניקה לפיתוח שאפשר לשים פה כל מיני רכיבים ויזואליים על הטופס אבל זה לא אתר אינטרנט וזאת תוכנה חלונאית. הקבצים שמשתתפים בפרויקט הזה שייכים לפרויקט מסוג Windows פורמס אפליקיישן שמאפשרים לנו לבנות תוכנה כזאת שהיא כמו חלונות.

  11. 03:10

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

  12. 03:25

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

  13. 03:40

    יכול להיות שאנחנו רוצים לבנות את המשחק עצמו, שזאת התוכנה החלונאית שאנחנו רוצים לבנות, ואנחנו גם רוצים אתר אינטרנט בשביל שנפרסם את המשחק.

  14. 03:52

    איזשהו אתר אינטרנט שלנו שהמשחק יהיה מפורסם בו, שיוכלו נניח להוריד אותו מהאתר. ובנוסף אנחנו רוצים עוד איזה שהוא פרויקט נפרד בשביל החישובים הלוגיים של המשחק, xיגול דורש כל מיני חישובים לוגיים ואנחנו רוצים להפריד את זה למערכת נפרדת, אולי.

  15. 04:10

    אז במצב כזה, מה שאנחנו רוצים, אנחנו רוצים שיהיה לנו מספר פרויקטים שונים תחת אותה מערכת, לכן מה שאנחנו עושים, אנחנו מורידים את play solution and project in the same directory, לא מסמנים את זה, ואז יש לנו קובץ שהוא נחשב סולושן שמאגד בתוכו את כל הפרויקטים. זה כמו קונטיינר כזה לפרויקטים

  16. 04:34

    שונים. אנחנו תמיד נקרא לקובץ הזה סולושן name בשם של כלל המערכת. לדוגמה tic tac toc g. הפרויקט שאנחנו פותחים כרגע זה פרויקט Windows Forums Application והוא רק ממשק המשתמש.

  17. 04:52

    דוגמה גוי או UI, UI User Interface, גוי זה Graphical User Interface. אז אנחנו יכולים לקרוא לזה טיק טק טו גוי בתור השם של הפרויקט וטיק טק טו גיים. זה בעצם כלל המערכת.

  18. 05:12

    בואו נבצע נקסט. אז מה שנפתח לנו עכשיו זה בעצם ממשק המשתמש של הפרויקט. כאן המשתמש הולך לראות את המסך של ה-X עיגול ומתקשר בעצם עם המחשב, זה בסדר.

  19. 05:27

    עכשיו אנחנו רוצים גם לבנות את אותו אתר אינטרנט. מה שאנחנו עושים זה, אנחנו רואים שיש פה היררכיה מסוימת, יש פה את ה-Solution שאחראי על כלל הפרויקטים ששייכים, ויש לנו פה את הפרויקט הנוכחי שכרגע פתחנו.

  20. 05:41

    שימו לב, אם יש לי מערכת שלא קשורה לפרויקט, סליחה, אם יש לי פרויקט שלא קשור למערכת הזאת, אז אני לא אצרף אותו לאותו סולושיין. אני לא מצרף הכל לסולושיין, את כל הפרויקטים שאני מתעסק איתם ever.

  21. 05:55

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

  22. 06:11

    הוא יהיה סולושיינינג נפרד, פרויקט נפרד, לא קשור בכלל לזה. אז אנחנו רואים את ה-Solution מתחתיו הפרויקט. אם אני רוצה להוסיף אייטם לפרויקט, כמובן, מקאשי מני על הפרויקט Add, New Item, Class, מה שבא לי.

  23. 06:26

    אם אני רוצה להוסיף פרויקט חדש, אז אני הולך לרמת ה-Solution Add, ואז אני רואה שהמערכת אומרת לי, טוב, פה התפקיד שלך זה להוסיף פרויקטים או פרויקט חדש, או אולי אתה רוצה לצרף פרויקט קיים.

  24. 06:37

    אז אנחנו רוצים לבצע Add, New Project, ועכשיו לבחור את הפרויקט הבא בתור. בואו נניח שאנחנו רוצים פרויקט מסוג Web, כי אנחנו רוצים לבנות גם אתר אינטרנט שיפרסם את המשחק שלנו.

  25. 06:50

    אז זה יהיה ASP.NET Core Web App. זה היה אתר אינטרנט. בואו נבצע Next. זה נקרא לו TicTacTocWebSite. נבצע Next. נעשה אולי קונפיגואציה קצת אחרת.

  26. 07:06

    Create. והמערכת יצרה את האתר. שימו לב שיש לנו כבר שני פרויקטים באותו סולושן. בואו נניח שאנחנו רוצים להוסיף עוד רכיב או ספרייה שתכיל רק את החישובים הלוגיים של המשחק.

  27. 07:24

    נניח שאנחנו רוצים להפריד את זה כי יש לי פה המון קוד שקשור לחישובים לוגיים אז אני מייצר עוד פרויקט והפעם מה שאנחנו לוקחים בואו נשים פה all אולי זה יהיה פרויקט מסוג class library.

  28. 07:40

    last library זה סוג של פרויקט מעניין שאומר תשמעו אני לא אומר לכם בדיוק מה אתם רוצים לפתח אני נותן לכם לפתח הכל אבל אני לא אתר אינטרנט או desktop application או winform או לא משנה מה יש לי רק קוד שמסוגל לבצע מה שבא לכם וכל פרויקט יכול להשתמש בי אז אנחנו יכולים לקרוא לו לדוגמא טיק טק טו, לוג'יק.

  29. 08:07

    זה הפעולות הלוגיות שיש באותו משחק שאנחנו בונים. בואו נבצע קריאייט. והנה יש לנו סך הכל קלאס עבור חישובים לוגיים בלבד.

  30. 08:19

    דרך אגב, הקלאס ליבררי זה בקיצור נקרא DLL, Dynamic Link Library, אז אולי אנחנו רוצים עוד איזשהו DLL, אבל שיכיל עזרים שאנחנו יכולים להשתמש איתם בעוד הרבה פרויקטים אחרים.

  31. 08:33

    הנה פה יש לי את ה-recent project, אז אנחנו יכולים כבר לבחור class library, נקסט, ולהגיד שזה בעצם עזרים כלליים שאני יכול להשתמש איתם במגוון פרויקטים, לא רק בפרויקט הזה.

  32. 08:45

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

  33. 09:03

    אפשר לעשות איזה general utilities כזה כללי שזה רק dll אפשר להשתמש איתו בכל פרויקט בין אם זה web בין אם זה winform והוא מכיל לי כל מיני עזרים utilities זה עזרים כלליים שאני כנראה אצטרך בהרבה פרויקטים אז אני מוסיף אותו next create ובפרויקט הבא שאני אבנה של איזשהו חנות למוצרי קוסמטיקה אני גם יוכל לקחת את הdll הזה בלי לכתוב אותו פשוט רק לצרף אותו אז תראו

  34. 09:32

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

  35. 09:49

    אז בוא נלך לנגומה לג'נרל יוטיליטיז הזה ונבנה פה איזושהי קלאס, בוא נניח נקרא לה נומריק הלפר ונבנה פה את אותה פונקציה שאומרת האם באמת משהו מחרוזת זה מספר כן או לא אז נניח שאנחנו רוצים שזה יהיה גם סטטיק יש לנו פה public static בוליאן is int אם איזושהי מחרוזת היא אינטג'ר כן או לא יש פה איזשהו

  36. 10:22

    קטע קוד שאנחנו צריכים לבנות כי אין איזה פקודה כזאת שאומרת לנו את הדבר הזה לפחות אני לא מכיר אז בואו נלך ונבנה אקספצ'ן. בעצם אנחנו לא צריכים אפילו את האובייקט אקספצ'ן, אנחנו יכולים בצורה כזאת.

  37. 10:36

    אם משהו קרס אנחנו מחזירים false, יש לנו int.parse. בואו ננסה to parse את ה-string.

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: עבודה עם פרויקט מסוג Console

ההרצאה הבאה: עבודה עם NuGet - להתקנת ספריות

הרצאות קשורות מקורסים אחרים

  • יצירת DLL - חלק 1
  • Client-Server Projects
  • עבודה עם VI - חלק 1
  • חטיפת DLL עם Sysmon

קורסים נוספים במסלול

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio