تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 3 از 3

نام تاپيک: [سوال] - اضافه کردن رفرنس به پروژه VB.Net و Copy Local و مفاهیم مربوط به آن

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2017
    پست ها
    19

    پيش فرض [سوال] - اضافه کردن رفرنس به پروژه VB.Net و Copy Local و مفاهیم مربوط به آن

    سلام دوستان

    من یه پروژه با vb.Net نوشتم و از یک Dll به صورت Copy Local = True استفاده کردم به عنوان رفرنس و رو سیستم خودم درست کار میکنه (این پروژه خودش یه Dll هست که از یه Dll دیگه به عنوان رفرنس استفاده میکنه)
    این Dll رفرنس در سیستم کاربر مطمئنا نصب هست ولی ممکنه در مسیر های متفاوتی باشه
    تو اینترنت سرچ کردم مفاهیمی مثل Global Assembly Cache پیدا کردم ولی اصلا متوجه نشدن چیه ؟
    کسی میتونه راجع به این موضوع راهنمایی کنه ؟ Global Assembly Cache
    Last edited by vb.civil; 06-02-2018 at 19:39.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    در سالهای طولانی برنامه نویسی، فایل های dll گونه های مختلفی پیدا کرده اند...
    در حال حاضر
    - برخی dll ها برای کارکردن باید در کنار exe (یا دایرکتوری appdomain) یا در system32 باشند.
    - برخی dll ها که از تکنولوژی COM استفاده میکنند باید در رایانه مقصد نصب شوند.
    - اما dll های خود دات نت باید یا در کنار exe (یا دایرکتوری appdomain) و یا در GAC باشند.
    (Global Assembly Cache)

    اگر dll ای که شما از آن استفاده میکنید، خودش با دات نت نوشته شده باشد، شامل مورد سوم میشود.
    شما میتوانید بسادگی هر دو dll را (آن یکی و مال خودتان) را کنار exe یا شاخه bin وب کپی کنید تا کار کنند.

    اما در مورد GAC:
    ==========
    یک پوشه خاص در ویندوز است، که dll های پرمصرف و اصلی دات نتی را بصورت نسخه بندی شده و کامپایل شده نگه داری میکند.
    زمانی خیلی در مرکز توجه بود، ولی در حال حاضر، دیگر زیاد مورد توجه و استفاده مستقیم برنامه نویسان قرار ندارد.
    در مواردی مانند تکنولوژی جدید dotNetCore که توانایی اجرا در سیستم عامل های مختلف را دارد، دیگر اصلا GAC مطرح نیست.
    درهرصورت...

    محل نگه داری این فایل های GAC در C:\Windows\assembly است.
    این یک سیستم فولدر خاص است و پوشه عادی نیست و شما واقعا داخلش را به آن صورتیکه است، نمی بینید.
    با درگ یک فایل dll و کپی آن به این پوشه میتوانید dll مذکور را در GAC نصب کنید، که این شامل کامپایل و طبقه بندی نسخه ای هم میشود.
    همچنین با خط فرمان ngen.exe میتوانید یک dll را با کد (و مثلا طی مراحل setup) در GAC نصب کنید.

    CLR قبل از اجرا برنامه تان ، وابستگی های dll آن را استخراج و بارگذاری میکند.
    و اولین جایی که دنبال تامین این وابستگی جستجو میکند، درون GAC است.
    و سپس در کنار exe (یا شاخه کاری appdomain) را جستجو میکند.
    و...

    بودن فایل در GAC به دلیل بهینه سازی برای cpu مورد نظر ، میتواند بسیار اندک موجب افزایش سرعت بالا آمدن اولیه برنامه تان شود. (ولی در سرعت اجرا بعدی برنامه تاثی
    ولی درعین حال همانطورکه عرض کردم، GAC دیگر مورد توجه نیست و برنامه ها ترجیح میدهند dll های دات نتی شان را کنار خودشان نگه داری کنند.
    (اینطوری نصب و لغو نصب و بروزرسانی و حتی اشکال یابی ساده تر خواهد بود)



    در نهایت اگر مشکلی برخورد کردید، آن dll دیگر که از آن استفاده میکنید را برایم بفرستید تا بتوانم بگویم نوعش چیست، و چه عملی برای کارکردش در رایانه مقصد لازم است.
    موفق باشید.
    Last edited by _H2_; 10-02-2018 at 02:25.

  3. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2017
    پست ها
    19

    پيش فرض

    مرسی دوست عزیز بابت توضیحات کامل

    Dll ی که Dll من بهش وابسته هست خودش با دات نت نوشته شده . . .

    الان یه جورایی با کپی کردنش کنار Dll حودم مشکل حل شده ولی بعضی وقتا یه اتفاقات عجیبی میافته . . .

    مثلا بعضی از مخاطبان من حدود 20 درصدشون با اینکه Dll رفنس کنار Dll من هست میگند اجرا نمیشه ولی حدود 80 درصد از مخاطبان مشکلی نداشتند


    اما تجربه خودم که دلیلی براش پیدا نکردم
    فایل Dll رفرنس و Dll خودم در یک دایرکتوری کپی میکنم و اجرا میکنم
    بعد از اولین اجرا دیگه Dll خودم رو هر جا کپی کنم کار میکنه این یعنی بعد از یک بار اجرای موفق یه جایی سیو میشه مسیر Dll رفرنس و دیگه لازم نیست کنار Dll خودم باشه !!! و تا زمانی که Dll رفرنس سر جای اولیه اش باشه مشکلی ندارم
    Last edited by vb.civil; 26-02-2018 at 13:08.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •