نمایش نتایج 1 تا 16 از 16

نام تاپیک: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

  1. #1

    Question اضافه کردن رفرنس در زمان اجرا

    سلام

    برنامه ای میخاوم بنویسم که
    اگر یک DLL خواص کنار برنامه نبود آن را از یک آدرس دانلود کند.

    مشکلی با دانلود DLL ندارم .
    مشکل اینجاست که چطوری هنگام اجرای برنامه آن را به رفرنس اضافه کنم.
    آخرین ویرایش به وسیله Collector : پنج شنبه 22 تیر 1391 در 16:09 عصر




  2. #2

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    این برنامه فقط میتونه رفرنس هایی خود ویژوال استودیو را ادد کند ولی من میخوام آدرس را خودم بدم به برنامه و آن را ادد کند.

  3. #3
    VIP آواتار gwbasic
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    40
    پست
    983

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نتیجه Add Reference در محیط ویژوال استدیو به صورت ساده اینه که dll مورد نظر کنار فایل exe برنامه قرار می گیره بنابراین شما اگر می خواین از dll در زمان اجرا استفاده کنید کافیه اونو کنار فایل exe برنامه قرار بدین و با استفاده از reflection از در زمان اجرا اون استفاده کنید. البته ناگفته نماند که این dll میتونه در هر مسیری باشه ولی شما در این حالت باید مسیر dll را هم هنگام reflection در نظر بگیرید

  4. #4

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط gwbasic مشاهده تاپیک
    نتیجه Add Reference در محیط ویژوال استدیو به صورت ساده اینه که dll مورد نظر کنار فایل exe برنامه قرار می گیره بنابراین شما اگر می خواین از dll در زمان اجرا استفاده کنید کافیه اونو کنار فایل exe برنامه قرار بدین و با استفاده از reflection از در زمان اجرا اون استفاده کنید. البته ناگفته نماند که این dll میتونه در هر مسیری باشه ولی شما در این حالت باید مسیر dll را هم هنگام reflection در نظر بگیرید
    من از این کد قبل از اینکه فرم اصلی لود بشه استفاده کردم. ما چون از کلاس های اون دی ال ال در برنامه استفاده کردم ارور داد.

    System.Reflection.Assembly.LoadFrom("DotRas.dll");


    سورس برنامه
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    658

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    Reflection با Add Ref فرق داره. شما اگه Add Ref نکنی ممکنه اصلا برنامه ات کامپایل نشه. ولی اگر لود کردن داینامیک است چاره Reflection است.

  6. #6

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط fjm11100 مشاهده تاپیک
    Reflection با Add Ref فرق داره. شما اگه Add Ref نکنی ممکنه اصلا برنامه ات کامپایل نشه. ولی اگر لود کردن داینامیک است چاره Reflection است.
    امکانش هست که قبل از اجرای برنامه, Dll را در کد نویسی وارد Add Ref کنم.

  7. #7
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    658

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    امکان پذیر نیست حتما باید add کنید.

  8. #8

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    چیزی که من از حرفهای شما متوجه شدم اینه که شما زمان کد نویسی میدونید چه رفرنس هایی برنامه شما نیاز داره! Reflection بصورت کلی برای مواقعی استفاده میشه که شما بخواید از رفرنس های متنوع (که زمان کد نویسی خیلی معلوم نیست) استفاده میشه.
    برای اون چیزی که شما میخواید میتونید در ابتدای اجرای برنامه و قبل از باز شدن فرم اصلی چک کنید ببینید تمام رفرنسهای برنامه روی سیستم کاربر موجود هست یا نه (با یه try / catch ساده) در صورتی که نبود برنامه لود نشه و درخواست دانلود فایل های مورد نظر رو بده.

  9. #9

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    چیزی که من از حرفهای شما متوجه شدم اینه که شما زمان کد نویسی میدونید چه رفرنس هایی برنامه شما نیاز داره! Reflection بصورت کلی برای مواقعی استفاده میشه که شما بخواید از رفرنس های متنوع (که زمان کد نویسی خیلی معلوم نیست) استفاده میشه.
    برای اون چیزی که شما میخواید میتونید در ابتدای اجرای برنامه و قبل از باز شدن فرم اصلی چک کنید ببینید تمام رفرنسهای برنامه روی سیستم کاربر موجود هست یا نه (با یه try / catch ساده) در صورتی که نبود برنامه لود نشه و درخواست دانلود فایل های مورد نظر رو بده.
    مشکل من هم دقیقا همین جاست اگر لینکی که در پست 2 گذاشته ام را بررسی کنید. این برنامه میتونه رفرنس را هنگام اجرا برنامه اضافه کنه ولی فقط رفرنس های فرمورک دات نت را نه فایلی که خودم دارم.

    در پست 4 هم من یک برنامه گذاشتم که نیاز به اضافه کردن یک دی ال ال دارد تا کامپایل شود. پس من نمیتونم برنامه را اجرا کنم و کدی بنویسم که چک کند که اگر آن رفرنس نبود آن را اضافه کند.


    الان مشکل اصلی اضافه کردن رفرنس در زمان اجرا هست .

    اگر بشه قبل از اجرای برنامه چک کرد خیلی خوب میشه منظورم اینه که قبل از این که فایل وارد حافضه بشه و برنامه رفرنس ها را چک کند.
    من چطوری میتونم برای اون قسمت برنامه بنویسم؟

  10. #10
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    658

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    ببین اول روشن کن منظورت runtime است یا designtime؟
    اگر برنامه ات کامپایل میشه پس مشکلت runtime است. می خوای اگر dll نبود قبل باز شدن فرم پیام بده؟ خب می تونی توی فرم قبلی یا Program.cs کد چک کردن وجود یا عدم وجود فایل را بکار ببری:
    System.Io.File.Exists

  11. #11

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    راستش رو بخوای اصلا نفهمیدم چی میخواید. اگر برنامه قبلا کد نویسی و کامپایل شده و شما در زمان اجرای برنامه میخواید ببینید تمام رفرنسها وجود دارند میتونید توی Program.cs در اولین خط Main با استفاده از try / catch از هر رفرنس یک کلاس رو ایجاد کنید اگر مشکلی نبود که هیچ در غیر اینصورت پنجره انتخاب فایل باز بشه و درخواست فایل dll رو کنه اونو کنار فایل اجرایی برنامه کپی کنه
    static void Main()
    {
    bool startedOK = true;
    try
    {
    RasHandle handle = null;
    }
    catch
    {
    startedOK = false;
    OpenFileDialog op = new OpenFileDialog();
    op.Filter = "DotRas.DLL File|DotRas.dll";
    if (op.ShowDialog() == DialogResult.OK)
    {
    try
    {
    System.IO.File.Copy(op.FileName, Application.StartupPath);
    startedOK = true;
    }
    catch { }
    }
    }
    if (startedOK)
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);
    System.Reflection.Assembly.LoadFrom("DotRas.dll");
    Application.Run(new Form1());
    }
    else
    MessageBox.Show("Some of Reference is missing");
    }

    ولی اگه اصرار بر استفاده از اون نمونه برنامه (به هر دلیلی) دارید میتونید از نمونه زیر کمک بگیرید
    فایل های ضمیمه فایل های ضمیمه

  12. #12

    Question نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط fjm11100 مشاهده تاپیک
    ببین اول روشن کن منظورت runtime است یا designtime؟
    اگر برنامه ات کامپایل میشه پس مشکلت runtime است. می خوای اگر dll نبود قبل باز شدن فرم پیام بده؟ خب می تونی توی فرم قبلی یا Program.cs کد چک کردن وجود یا عدم وجود فایل را بکار ببری:
    System.Io.File.Exists
    مشکل الان اینجاست که من یک کلاس دارم که از اون dll استفاده میکنه و اگر توی رفرنس نباشه ارور میده.


    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    راستش رو بخوای اصلا نفهمیدم چی میخواید. اگر برنامه قبلا کد نویسی و کامپایل شده و شما در زمان اجرای برنامه میخواید ببینید تمام رفرنسها وجود دارند میتونید توی Program.cs در اولین خط Main با استفاده از try / catch از هر رفرنس یک کلاس رو ایجاد کنید اگر مشکلی نبود که هیچ در غیر اینصورت پنجره انتخاب فایل باز بشه و درخواست فایل dll رو کنه اونو کنار فایل اجرایی برنامه کپی کنه
    از خط 6 در برنامه بالا که نوشتید تا وقتی که رفرنس اضافه نشه نمیشه استفاده کرد چون RasHandle یکی از کلاس های اون dll است.
    مشکل اضافه کردن به رفرنس با اون برنامه ای که دادید حل شد.
    الان این برنامه را نگاه کنید من اومدم از یک dll قبل از اینکه به رفرنس اضافه بشه استفاده کردم.
    خواستم از شرط استفاده کنم بازم نشد. برای این چه راه حلی هست.
    فایل های ضمیمه فایل های ضمیمه

  13. #13

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    سلام
    بعضی کامپوننتها هم هستند که اگر در برنامه ازشون استفاده کرده باشی و موقع اجرا کنار برنامه نباشند, برنامه کلا ارور میده (ارور run time نه. اون ارور donot send). این رو هم دقت داشته باشین.
    موفق باشید

  14. #14

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط مرتضی تقدمی مشاهده تاپیک
    سلام
    بعضی کامپوننتها هم هستند که اگر در برنامه ازشون استفاده کرده باشی و موقع اجرا کنار برنامه نباشند, برنامه کلا ارور میده (ارور run time نه. اون ارور donot send). این رو هم دقت داشته باشین.
    موفق باشید
    الان دقیقا مشکل همین است. من از dll در برنامه استفاده کردم ولی اون الان کنار فایل اجرایی نیست همچنین به رفرنس اضافه نشده

  15. #15

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    با سلام
    مشکلی داشتم چطور میتونم دوتا فایل dll با نام یکسان ولی با نسخه متفاوت رو در رفرنس ادد کنم مثلا دو تا dll مربوط به دو نسخه excel که که نامش یکسان هسنش به هنگام اضافه کردن پیغام خطای کانفلیگ موجود بودن فایل رو میده ...میشه یک نمونه سورس کامل رو قرار بدین ..

  16. #16

    نقل قول: اضافه کردن رفرنس در موقع اجرا برنامه از داخل برنامه

    نقل قول نوشته شده توسط saeedmassomi مشاهده تاپیک
    با سلام
    مشکلی داشتم چطور میتونم دوتا فایل dll با نام یکسان ولی با نسخه متفاوت رو در رفرنس ادد کنم مثلا دو تا dll مربوط به دو نسخه excel که که نامش یکسان هسنش به هنگام اضافه کردن پیغام خطای کانفلیگ موجود بودن فایل رو میده ...میشه یک نمونه سورس کامل رو قرار بدین ..

    تو تاپیک بغلی هم خدمتتون عرض کردم dll نسخه پایین رو اد کنید ، در نسخه های بالای ویندوز کار می کنه

تاپیک های مشابه

  1. اضافه کردن جدول و فیلد به بانک از طریق برنامه
    نوشته شده توسط amini699 در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: سه شنبه 13 آذر 1386, 00:25 صبح
  2. اضافه کردن کامپوننت در زمان اجرا
    نوشته شده توسط mohandesan در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 06 شهریور 1386, 12:45 عصر
  3. اضافه کردن فیلد در زمان اجرا
    نوشته شده توسط ramin_mash در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: یک شنبه 27 خرداد 1386, 18:21 عصر
  4. اضافه کردن فیلد در زمان اجرا
    نوشته شده توسط jalalimohammad در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: چهارشنبه 15 تیر 1384, 13:42 عصر
  5. پاسخ: 5
    آخرین پست: شنبه 07 آذر 1383, 15:56 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •