PDA

View Full Version : کامپایل کد در زمان اجرا (Runtime Code Compiling) - ساخت خروجی exe



Saman_12
یک شنبه 21 دی 1393, 18:16 عصر
سلام.

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

1.میخوام برنامه ای بنویسم که یه فایل اجرایی رو کد کنه بعدش یه خروجی exe بده (شامل یه قسمتی از برنامه من و برنامه کد شده) که وقتی اجراش کردم مثلا در صورت درست بودن رمز فایل رو اجرا کنه!
اولش خواستم فایل رو کد کنم بعد به انتهای یه نسخه از برنامه خودم اظافه کنم و در حین اجرا هم از انتهای برنامم بخونم ولی مشکل اینجاست که بیت دیفندر بهش گیر میده (احتملا کل انتی ها)...

بعدش فکر کردم که بیام یه برنامه جدید کامپایل کنم که فایل رو به صورت رشته یا هرجور دیگه ای داخل یه متغییر داره اما اینجوری که فهمیدم حتمی باید vs نصب باشه و دات نت به تنهایی کافیی نیست!!
نمونه هاش رو قبل تو سایت دیدم ولی مشکل اینجاست که میخوام برنامه فقط با وجود .net اجرا بشه .

راه حلی وجود داره که بشه یک تیکه کد مشخص رو در زمان اجرا کامپایل کرد و یه خروجی exe ازش داشت؟؟ بدون اینکه vs نصب باشه؟
یا اصلا اصل کاری همون خط اول(1.)

شرح تکمیلی :
یه برنامه بنویسم که بتونه دوتا فایل رو با هم ترکیب کنه و یه خروجی exe بده که وقتی اجراش میکنی دو تا فایل قبلی رو از داخل خودش بهم بده.
winrar رو دیدن که میاد یه فایل اجرایی میسازه که توش چندتا فایل میتونه باشه دقیقا میخوام برنامه منم همین کار رو کنه!

بابت توضیح بدم شرمنده ام.

Saman_12
دوشنبه 22 دی 1393, 13:43 عصر
bring to front!

Saman_12
دوشنبه 22 دی 1393, 22:58 عصر
به هر حال با Reflection.Emit یه کارای کردم :
اومد یه کد پایه نوشتم که بیت های دوتا برنامه رو میگیره و یه اسپیس وسطشون اظافه میکنه و به صورت رشته تو خودش نگه میداره حالا این رشته رو با Emit به صورت مقدار پیش فرض برای متغییر ذخیره میکنم...بعد با Emit یه برنامه میسازم که این رشته داخلش هست و کدهای مربوط به تبدیلش به بیت و ذخیره کردنش هم همینطور.
حالا مشکل جدید پیدا کردم که اگه حجم فایل ها زیاد بشه پردازشش خیلی طول میکشه چه موقع Emit کردن چه موضع اجرا! حجم برنامه هم سر به فلک میکشه.(نسبت به فایل های اول)
مطمئنا این راه اصولیش نیست.کسی راه حلی به ذهنش نمیرسه؟:متفکر:

Mahmoud Zaad
سه شنبه 23 دی 1393, 11:16 صبح
سلام
این سورس یک سری تصویر و موسیقی رو میگیره و یه exe تولید می کنه.