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

نام تاپیک: اجرای dll بدون add کردن

  1. #1

    اجرای dll بدون add کردن

    سلام دوستان.
    من قصدم اینه بدون add کردن فایل dll بتونم از فانکشن هاش استفاده کنم.با سرچی ک زدم یه چیزایی دستگیرم شد اما نتونستم اجرا کنم.
    ابتدا یه فایل dll ایجاد میکنم به این شکل(لطفا به نام فانکشن و کلاس دقت کنید) :
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace class1
    {
    public class class1
    {
    public static void func(string str) {
    MessageBox.Show(str);
    }
    }
    }


    بعد یه پروژه Windows Form Application ایجاد میکنم و این فانکشن ها رو درش میسازم :
    (class1 و func)

     public static void Run(byte[] dll_byte, object[] dll_obj, string Class, string adress)
    {
    Assembly byteassem = Assembly.Load(dll_byte);
    MethodInfo method_Run = byteassem.GetType(Class).GetMethod(adress);
    method_Run.Invoke(null, dll_obj);
    }
    //////////////////////////////////
    public static void Load_Dll(string str)
    {
    byte[] dll_path = File.ReadAllBytes("MyDllFile.dll");
    Run(dll_path, new object[] { str }, "class1", "func");
    }


    و بعد یه جا با این فراخوانیش میکنم :

    Load_Dll("Peigham"); 


    و در نهایت کد کامپایل میشه اما در هنگام اجرا با خطا مواجه میشه.
    ممنون میشم کمک کنید
    آخرین ویرایش به وسیله limpizik : یک شنبه 16 فروردین 1394 در 03:38 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    تهران
    پست
    1,629

    نقل قول: اجرای dll بدون add کردن

    نقل قول نوشته شده توسط limpizik مشاهده تاپیک
    سلام دوستان.
    من قصدم اینه بدون add کردن فایل dll بتونم از فانکشن هاش استفاده کنم.با سرچی ک زدم یه چیزایی دستگیرم شد اما نتونستم اجرا کنم.
    ابتدا یه فایل dll ایجاد میکنم به این شکل(لطفا به نام فانکشن و کلاس دقت کنید) :
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace class1
    {
    public class class1
    {
    public static void func(string str) {
    MessageBox.Show(str);
    }
    }
    }


    بعد یه پروژه Windows Form Application ایجاد میکنم و این فانکشن ها رو درش میسازم :
    (class1 و func)

     public static void Run(byte[] dll_byte, object[] dll_obj, string Class, string adress)
    {
    Assembly byteassem = Assembly.Load(dll_byte);
    MethodInfo method_Run = byteassem.GetType(Class).GetMethod(adress);
    method_Run.Invoke(null, dll_obj);
    }
    //////////////////////////////////
    public static void Load_Dll(string str)
    {
    byte[] dll_path = File.ReadAllBytes("MyDllFile.dll");
    Run(dll_path, new object[] { str }, "class1", "func");
    }


    و بعد یه جا با این فراخوانیش میکنم :

    Load_Dll("Peigham"); 


    و در نهایت کد کامپایل میشه اما در هنگام اجرا با خطا مواجه میشه.
    ممنون میشم کمک کنید
    سلام
    اول باید اسمبلی رو بارگزاری کنی:

    var assembly = Assembly.LoadFrom( assemblyFile );

    سپس باید از کلاسی که مد نظرت هست instance بسازی:


    var type = assembly.GetType( typeName );
    var instance = Activator.CreateInstance( type, nameSpace ) as MyClass;

    به همین راحتی.
    البته یه نکته‌ی مهم هم وجود داره. اون هم اینه که کلاس MyClass باید هم تو برنامه‌ی اصلی و هم در dll شما وجود داشته باشه. و این امکان نداره مگه این که یه dll دیگه‌ای وجود داشته باشه
    که هم جزو resourceهای برنامه‌ی اصلی باشه و هم dll ای که به صورت پویا داره بارگزاری می‌شه.
    البته معمولاً تو این موارد بجای کلاس از interface استفاده می‌شه.

    صبا صبوحی

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

  1. اجرای MultiValueConverter بدون بایند کردن به یه کنترل
    نوشته شده توسط PetekDincos در بخش WPF
    پاسخ: 0
    آخرین پست: سه شنبه 24 مرداد 1391, 22:13 عصر
  2. سوال: add کردن dll به gacutil در سیستم مشتری فقط برای اجرای پروژه
    نوشته شده توسط quantomquery در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 09 مرداد 1390, 14:52 عصر
  3. سوال: اجرای برنامه بدون Attach کردن بانک
    نوشته شده توسط Smoke_1110 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: جمعه 26 فروردین 1390, 08:14 صبح
  4. استفاده از dll بدون add به رفرنس
    نوشته شده توسط mom alone در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 01 فروردین 1388, 17:54 عصر
  5. کمک در مورد add کردن dll در محیط vb.net 2003
    نوشته شده توسط mahdie در بخش VB.NET
    پاسخ: 3
    آخرین پست: دوشنبه 26 بهمن 1383, 14:55 عصر

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

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