Strongly Names Assembly :
להבנתי מטרת הנושא הוא לפתור את בעיית ה DLL Hell. קראתי מספר מאמרים בנושא (בעיקר מה MSDN) ומסתבר שדברים בסיסים אינם מובנים לי (חוזרים על עצמם בלכ המאמרים...), לכן אשמח אם תוכלו להבהיר לי אותם
: 1. כדי לחתום אסמבלי, אני צייך לייצר מפתח, ואני עושה זאת ע"י sn -k aaa נוצר לי קובץ aaa וע"י sn -tp aaa אני יכול לראות את תוכנו. הוא מכיר את המפתח (שדרה ארוכה מאוד מאוד של תווים), ובסופו מחזורת נוספת קצרה, שנקראת Token. מה זה ה Token הזה בדיוק ? הרצה של אלגוריתם מסויים על המחרוזת הארוכה וקבלת מחזורת "קומפקטית יותר" ? מה מטרתה ? האם רק לטובת נוחות ? 2. על סמך מה נוצר קובץ ה aaa ? מה מונע מאדם אחר, במקום אחר, ליצור במקרה אותו מפתח כמו שלי ? 3. אני רואה בקובץ רק מפתח אחד, היכן נכנס אלמנטי המפתח הפרטי והציבורי ? (או שזה לא רלוונטי, ורק מפתח אחד משמש לחתימת האסמבלי ?) 4. מה בכלל משמעות החתימה ? האם זה רק לטובת זיהוי חד חד ערכי של האסמבלי וגירסתו, או גם לטובת אבטחה (אולי אי אפשר לראות את הקוד של אסמבלי חתום / לערוך בו שינויים ?) 5. המזהה החד חד ערכי של אסמבלי ב GAC הוא : שם האסמבלי, גירסא, Culture ומפתח ה Token. לשם מה צריך את כל הארבעה ? הרי ה Token עצמו הוא כבר מזהה חד חד ערכי, לא ? 6. נניח ויש לי 2 גרסאות שונות חתומות ב GAC (של אותו DLL), ומתוך קוד #C שלי אני רוצה להפעיל פונקציה מתוך אחד ספציפי - כיצד אני עושה זאת ? (ניסיתי לבצע Add Reference ל DLL הזה, אבל כשאני עושה Add Reference ואז Browse ומנווט לתיקיית ה GAC, אי אפשר לבחור משם כלום...) 7. הבנתי שכדי לחתום אסמבלי מסויים, כל מה שאני צריך לעשות הוא לכתוב בתוכו את השורה הרלוונטית
מה בדיוק קורה מה בדיוק מוצפן כש CLR חותם את האסמבלי ? מקווה שלא נרדמתם...
להבנתי מטרת הנושא הוא לפתור את בעיית ה DLL Hell. קראתי מספר מאמרים בנושא (בעיקר מה MSDN) ומסתבר שדברים בסיסים אינם מובנים לי (חוזרים על עצמם בלכ המאמרים...), לכן אשמח אם תוכלו להבהיר לי אותם
[assembly:AssemblyKyFile("aaa")]
היכן אני כותב את זה ? והאם זה אכן כל מה שצריך ? 8. ושאלה לקינוח