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

نام تاپیک: Embed کردن دات نت فریمورک در برنامه C#‎

  1. #1

    Embed کردن دات نت فریمورک در برنامه C#‎

    سلام. دوستان چطوری میتونم دات نت فریمورک رو در برنامه ای که با سی شارپ نوشتم embed کنم یا مثلا لینک استاتیک کنم؟ طوری که برنامه در سیستم هایی که دات نت روی اونها نصب نیست اجرا بشه؟؟؟

    البته نمیخوام یه ستاپ درست کنم که دات نت رو نصب کنه، میخوام فایل exe برنامم یه تک فایل باشه که توش دات نت هم داشته باشه...

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    پونک
    سن
    42
    پست
    490

    نقل قول: Embed کردن دات نت فریمورک در برنامه C#‎‎

    کل دات نت رو که نميشه تو فايل اجرایی embed کنی!! پس تکليف CLR چی میشه؟ تکليف Garbage Collector چی ميشه؟! مايکروسافت داره رو Net Native. کار ميکنه که تا الان برای Application های Windows Store کامل شده و در آينده برای Desktop هم تکميلش میکنه. کارشم هم اينه که تو سیستم نهایی ديگه نيازی به دات نت نخواهد بود و فقط یه برنامه کوچیک وجود خواهد داشت که کار GC رو انجام میده. با اين روش Productivity ايه دات نت و Performance نيتيو رو خواهيم داشت!

    اما اگه تو برنامتون یک یا چند dll دارين که تو دات نت نيستن(برای مثال dll های مربوط به EF) ميتونين اينها رو تو فايل اجراييتون embed کنين:

    ابتدا اين dll ها رو به Project ويژوال استوديو اضافه کنين و سپس تو Property هر کدوم Build Action رو Embedded Resource قرار بدين و اين باعث ميشه تا کامپايلر سی شارپ dll های شما رو به فايل exe امبد کنه.
    اما در ران تايم، CLR قادر نخواهد بود تا Assembly های وابسته رو پيدا کنه مگر اينکه بهش حالی کنيم که embed شون کرديم:

    وقتی برنامه Initialize ميشه اين event رو register کنين:

    AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
    String resourceName = "AssemblyLoadingAndReflection." +
    new AssemblyName(args.Name).Name + ".dll";
    using (var stream = Assembly.GetExecutingAssembly().GetManifestResourc eStream(resourceName))
    {
    Byte[] assemblyData = new Byte[stream.Length];
    stream.Read(assemblyData, 0, assemblyData.Length);
    return Assembly.Load(assemblyData);
    } };



    برای اطلاعات دقيق تر به کتاب بسيار عالی و البته دشوار #CLR via C نوشته Jeffrey Richter مراجعه کنين.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 21 آبان 1394 در 11:20 صبح

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

  1. سوال: Embed نمودن برنامه ای در برنامه دلخواه
    نوشته شده توسط hamidr_14 در بخش VB.NET
    پاسخ: 1
    آخرین پست: سه شنبه 17 آبان 1390, 15:13 عصر
  2. تکه تکه شدن فونت Embed
    نوشته شده توسط Unique در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: جمعه 04 شهریور 1390, 13:25 عصر
  3. سوال: embed کردن و اجرای یک فایل exe
    نوشته شده توسط sepehr1014 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: پنج شنبه 11 فروردین 1390, 17:14 عصر
  4. سوال: چگونگی Embed کردن برخی اسمبلی های دات نت
    نوشته شده توسط Salar Ashgi در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 5
    آخرین پست: سه شنبه 06 مهر 1389, 12:29 عصر

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

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