DCSIMG
Find your dll's - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

Find your dll's

בדרך כלל כשאנחנו מוסיפים reference לפרויקט שלנו, ה dll יושבים בבטחה תחת ספריית ה bin,

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

באחד הפרויקטים השתמשתי ב installer של vs, אחד מהתכונות המעניינות והמעצבנות שלו, זה שאי אפשר ב install אחד, להעתיק פעמיים קובץ אחד לשני תיקיות שונות.

נניח שיש לי קובץ שנקרא My.dll, ויש לי שתי אפליקציות שמשתמשות בו, אני יכול לבחור אחד מהאופציות הבאות.

  1. לייצר שני install עבור כל אחד מהפליקציות, וליד כל אחד מה exe לשים את MyDll.dll
  2. להשתמש ב install אחד, ולשים את שני האפליקציות באותה תיקייה
  3. לייצר תיקייה שנקרא לה Common, ולשים שם את כל הקבצים המשותפים לשני האפליקציות (ולדאוג לכך, שהאפליקציות ידעו היכן נמצאים ה dll)

(במחשבה שנייה, זה דווקא נשמע הגיוני, שאם יש לי dll אחד ששני אפליקציות משתמשות בו, לשים אותו בתיקייה אחת, כדי שאם יהיו שינויים, אצטרך להחליף רק במקום אחד)

 

בכל מקרה, נחזור למה שדברנו.

אנחנו מחפשים דרך לשים dll במקום אחר מתיקיית ה bin,

  1. אפשר לשים אותו ב gac, (נניח שאנחנו לא רוצים להשתמש בדרך הזאת)
  2. אפשר להשתמש ב Probing,
  3. ואפשר להשתמש ב AssemblyBinding

Probing, יעזור לנו רק אם אנחנו רוצים לשים את ה dll בספריות מקוננות בתוך ה bin, (מה שלא פותר לנו את הבעייה המתוארת למעלה) וזה נראה כך:

    1   <runtime>

    2    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    3      <probing privatePath="bin;bin2\subbin;bin3"/>

    4    </assemblyBinding >

    5  </runtime>

עם AssemblyBinding אפשר לתת כל נתיב של קובץ,כל עוד יש לו StrongName

    1 <runtime>

    2   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    3     <dependentAssembly>

    4       <assemblyIdentity name="NyDll"

    5           publicKeyToken="89845dcd8080cc91"

    6           culture="neutral" />

    7           <codeBase version="9.0.242.0"

    8             href="file://C:/Program Files/MyApp/Common/MyDll.dll">

    9           </codeBase>

   10     </dependentAssembly>

   11   </assemblyBinding >

   12 </runtime>

פורסם: Dec 08 2008, 11:52 AM by Shlomo | with 1 comment(s)
תגים:,

תוכן התגובה

Shlomo כתב/ה:

בפוסט הקודם כתבתי על הדרכים שלנו לייבא את ה reference על ידי שימוש ב config file עם Probing, Code base

# December 10, 2008 8:47 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 8 and 2 and type the answer here:


Enter the numbers above: