PDA

View Full Version : exe dar C#.net



benyamin_pc
شنبه 07 مرداد 1385, 19:14 عصر
سلام وقتی یک فایک C# رو EXE می کنیم به معنای واقعی exe نمیشه و روی کامپیوتری که اصلا Frame work نصب نباشه جواب نمیده غیر از راه merge و ساختن یک فایل نصبی راه دیگری هست؟http://www.persianforum.net/smileys/unsure.gif
ضمنا من به شخصه فکر می کنم سی شارپ یک برنامه نویسی قدرتمندیه که کارش حرف نداره می خواستم بدونم آیا از دلفی هم قدرتمندتره؟

اَرژنگ
یک شنبه 08 مرداد 1385, 06:05 صبح
سلام وقتی یک فایک C# رو EXE می کنیم به معنای واقعی exe نمیشه و روی کامپیوتری که اصلا Frame work نصب نباشه جواب نمیده غیر از راه merge و ساختن یک فایل نصبی راه دیگری هست؟http://www.persianforum.net/smileys/unsure.gif

۱_منظور از راهه merge چیه؟
۲_برایه چی این را لازم دارید؟


ضمنا من به شخصه فکر می کنم سی شارپ یک برنامه نویسی قدرتمندیه که کارش حرف نداره می خواستم بدونم آیا از دلفی هم قدرتمندتره؟
این نوع مقایسه مثله مقایسی پیچ گوشتی با چکشه. من از دلفی برایه بعضی کارها استفاده میکنم، از سی شارپ برایه کارهایه دیگه. جاوا ، سی ، ... هر کدام جایه استفاده دارند، به موقعش از هر کدام باید استفاده کرد.

omid_Ahmadi
یک شنبه 08 مرداد 1385, 06:54 صبح
در این مورد قبلا توی یه تاپیک دیگه توضیح داده شده و تمام جزئیات اجرای یه برنامه با فریم ورک و بدون اون بررسی شدن.
در مورد مقایسه ی دلفی و سی شارپ هم، به نظر می رسه که آینده ی بهتری در انتظار سی شارپه. دلایل زیادی رو میشه برای این مورد گفت، اما راجع به این مورد هم قبلا صحبت شده (مقایسه ی این زبان ها) که می تونی به اونها مراجعه کنی.

benyamin_pc
یک شنبه 08 مرداد 1385, 09:53 صبح
آقا امید اجرای برنامه با فریم ورک و بدون اون کجا توضیح داده شده؟
ببخشیدا آخه من اینجا تازه واردم!

aidinwashere
یک شنبه 08 مرداد 1385, 20:41 عصر
http://www.barnamenevis.org/forum/showthread.php?t=40585

اَرژنگ
دوشنبه 09 مرداد 1385, 03:42 صبح
http://www.barnamenevis.org/forum/showthread.php?t=40585
اسمه تپیک چیه؟ من از بالا تا پائینش را خوندم چیزی پیدا نکردم.

omid_Ahmadi
دوشنبه 09 مرداد 1385, 07:04 صبح
تاپیک های زیر رو ببین:
اجرای برنامه های .NET بدون فریم ورک (از پست 41 به بعد):
http://www.barnamenevis.org/forum/showthread.php?t=41559

این تیپیک هم ممکن مورد استفاده قرار بگیره (تشخیص نصب بودن فریم ورک):
http://www.barnamenevis.org/forum/showthread.php?t=38508

اَرژنگ
دوشنبه 09 مرداد 1385, 09:00 صبح
تاپیک های زیر رو ببین:
اجرای برنامه های .NET بدون فریم ورک (از پست 41 به بعد):
http://www.barnamenevis.org/forum/showthread.php?t=41559


نتیجه :
بدون نصب دات نت فریم ورک برنامه هایی که با نسخه های دات نت نوشته میشوند اجرا نمیشود

benyamin_pc
دوشنبه 09 مرداد 1385, 12:42 عصر
پس بهترین راه همون ساخت یه فایل نصبیه نه؟

اَرژنگ
دوشنبه 09 مرداد 1385, 15:06 عصر
پس بهترین راه همون ساخت یه فایل نصبیه نه؟
مشکل اصلی چیه؟ ۳۰ مگابایت هیچ نیست این روزها. دو تا روش هست، یکیش اینه که فریم ورک را با برنامه در یکزمان باهم نصب کنید و یا ایکنه کاربرد جدا نصب کنه.
یا اینکه هم برگشتن به دلفی و ویا ویبی ، سی++ ...

aidinwashere
سه شنبه 10 مرداد 1385, 02:19 صبح
شاید بد نیست یاد آوری کنم که در Service Pack 2 ویندوز XP فریمورک نسخه 1.1 وجود دارد، که این روزها که فکر کنم روی کامپیوتر همه باشه.(بگذریم که همه الان Vista دارن!) عمو بیلی هم قول داده تو نسخه های آتی ویندوز فریمورک رو بذاره.
اوس آرژنگ جان!

omid_Ahmadi
سه شنبه 10 مرداد 1385, 08:08 صبح
بدون نصب دات نت فریم ورک برنامه هایی که با نسخه های دات نت نوشته میشوند اجرا نمیشود

بهتره یه بار دیگه اون پستهایی که معرفی کردم رو دقیق بخونید.
این کار شدنیه و از لحاظ امنیتی بهتره (امنیت در کد برنامه). پس اگر می خواید برنامه رو به صورت عمومی توضیع کنید و یا می خواید اون رو به افراد خاص بفروشید اما می دونید که امکان داره اون فرد (یا حتی فرد دیگه ای) سعی کنه به کد برنامه ی شما دسترسی داشته باشه، بهتره حتما از از روش (تبدیل MSIL به Native Code) استفاده کنید.

موفق باشید.

اَرژنگ
سه شنبه 10 مرداد 1385, 08:32 صبح
بهتره یه بار دیگه اون پستهایی که معرفی کردم رو دقیق بخونید.
این کار شدنیه و از لحاظ امنیتی بهتره (امنیت در کد برنامه). پس اگر می خواید برنامه رو به صورت عمومی توضیع کنید و یا می خواید اون رو به افراد خاص بفروشید اما می دونید که امکان داره اون فرد (یا حتی فرد دیگه ای) سعی کنه به کد برنامه ی شما دسترسی داشته باشه، بهتره حتما از از روش (تبدیل MSIL به Native Code) استفاده کنید.
موفق باشید.
متشکرم.
مقدارات دنگ و فنگش به شدنی بودنه این کار نمی‌ارزه!
از بین تمام اون پستها، یکیش نگفت برایه این کار این لیست را انجام بدید و هیچ مشکلی پیش نمیاد.
نداشتن فریم ورک چرا اونقدر مهمه؟ جایی گارانتی ندیدم که فریم ورک را نصب نکنند هیچ مشکلی نخواهد بود.
برایه جلوگیری از دسترسی به کد، از obfuscationاستفاده میشه کرد تا این که یک چیزه معلول سرهم کرد.
نا سلامتی برنامه هایه داتبیس و معمولی که کاربرها استفاده میکنند آنچنان رازی نداره که هیچ کی نتونه باز کند.
اگر هم پسوردی داشته باشه که باید انکریپت کنند.
فاید از نداشتن فریم ورک را من هنوز نفهمیدم،

omid_Ahmadi
سه شنبه 10 مرداد 1385, 09:24 صبح
تنها فایده ی نداشتن فریم ورک همون بحث امنیته (که مفصلا هم توی سایت راجع به اون بحث و نتیجه گیری شده). اگر obfuscate کردن امنیت لازم رو برای شما فراهم می کنه خوب استفاده از این روش خیلی خوبه. اما اگه به امنیت بیشتری نیاز دارید باید از تبدیل CIL به Native استفاده کنید.
ترکیب این روش هم در اغلب پروژه های بزرگ می تونه مفید باشه.

راستی در مورد دنگ و فنگش هم باید بگم که نرم افزار هایی هستند که از برنامه های .NET فایلهای EXE به صورت StandAlone ایجاد می کنن.
می تونید از اونها هم استفاده کنید.

اَرژنگ
سه شنبه 10 مرداد 1385, 10:03 صبح
تنها فایده ی نداشتن فریم ورک همون بحث امنیته (که مفصلا هم توی سایت راجع به اون بحث و نتیجه گیری شده). اگر obfuscate کردن امنیت لازم رو برای شما فراهم می کنه خوب استفاده از این روش خیلی خوبه. اما اگه به امنیت بیشتری نیاز دارید باید از تبدیل CIL به Native استفاده کنید.
ترکیب این روش هم در اغلب پروژه های بزرگ می تونه مفید باشه.

راستی در مورد دنگ و فنگش هم باید بگم که نرم افزار هایی هستند که از برنامه های .NET فایلهای EXE به صورت StandAlone ایجاد می کنن.
می تونید از اونها هم استفاده کنید.
کدام بحث امنیته (که مفصلا هم توی سایت راجع به اون بحث و نتیجه گیری شده). ؟ اسمه توپیکش چی بود؟
من هنوز علاقه دارم بدونم که این کار را دستی چطور میشه انجام داد، یکبار دیگه اون لینکهایی را که دادید بر رسی میکنم شاید پیداش کردم.
باز هم متشکرم از جوابتان
موفق باشید.

benyamin_pc
سه شنبه 10 مرداد 1385, 10:25 صبح
سلام
یه پیشنهاد دارم
اگه بجای اینهمه بحث شما زحمت می کشیدید و نتایج به قول خودتون بحثهای قبلی رو می فرماییدین خیلی زود مشکله همه حل می شد
درست شاید این بحث قبلا اتفاق افتاده
اما چیزی که تو اون بحث باعث شده بوده که بحث طولانی شده بوده تلاش برای نتیجه گیری بوده اما الان که نتیجه گرفتین حداقل شما پس می تونستین تو چند خط فقط نتایج را بیان کنین و به بحث زودتر پایان بدین
تازه ماهم زودتر به نتیجه می رسیم!

راستی آقا امید میشه اسمه یکی از اون برنامه ها رو بگین؟

اَرژنگ
سه شنبه 10 مرداد 1385, 10:50 صبح
راستی آقا امید میشه اسمه یکی از اون برنامه ها رو بگین؟
من فکر میکنم یکجایی خوندم که:
xenocode

omid_Ahmadi
سه شنبه 10 مرداد 1385, 13:36 عصر
اگه بجای اینهمه بحث شما زحمت می کشیدید و نتایج به قول خودتون بحثهای قبلی رو می فرماییدین خیلی زود مشکله همه حل می شد
درست شاید این بحث قبلا اتفاق افتاده
اما چیزی که تو اون بحث باعث شده بوده که بحث طولانی شده بوده تلاش برای نتیجه گیری بوده اما الان که نتیجه گرفتین حداقل شما پس می تونستین تو چند خط فقط نتایج را بیان کنین و به بحث زودتر پایان بدین
تازه ماهم زودتر به نتیجه می رسیم!


بحثهایی که قبلا در این رابطه صورت گرفته بود تمام جوانب و علتها رو بررسی کرده بود و فقط یه دستور العمل توش مطرح نشده بود، بلکه هر حرفی با دلیل گفته میشد.
نتیجه ی کلی اینه که اگر براتون مهم نیست که سورس لو بره یا نه، خوب برنامه رو به صورت عادی توزیع کنید. اما اگر مهمه برید و مطالبی رو که گفتم مطالعه کنید تا متوجه بشید در چه مواقعی باید از چه روشهایی استفاده کرد.



کدام بحث امنیته (که مفصلا هم توی سایت راجع به اون بحث و نتیجه گیری شده). ؟ اسمه توپیکش چی بود؟
من هنوز علاقه دارم بدونم که این کار را دستی چطور میشه انجام داد، یکبار دیگه اون لینکهایی را که دادید بر رسی میکنم شاید پیداش کردم.


در مورد بحث امنیت می تونید به مقاله ای که در رابطه با معماری .NET Framework توی این سایت قرار دادم مراجعه کنید (نمی دونم از کدوم پست شروع میشد، اون رو بعدا می نویسم). در مورد نحوه ی انجام این کار به صورت دستی هم فکر کنم توی همون تاپیک اولی که لینکش رو دادم به پست شماره ی 40 به بعد مراجعه کنید، فکر کنم کمکتون کنه. البته یه تاپیک دیگه هم بود که الان نمی دونم آدرسش پیه بعدا سرچ می کنم و لینکش رو قرار می دم.

موفق باشید.

benyamin_pc
پنج شنبه 12 مرداد 1385, 10:46 صبح
حالا یه سوال ؟
من اکثر اون لینکارو خوندم دستون درد نکنه
حالا اگه بخواهیم یه برنامه طراحی کنیم که سیستم رو از ابتدا به دس بگیره مثل کامندر یا برنامه های ریکاوری
برنامه رو مثلا رو یه دیسکت بزاریم و کامپیوتر رو ری استارت کنیم و حالا بخواهیم اون برنامه بالا بیاد اینجا چجوری این کار رو انجام بدیم؟Xincode این بایل رو میسازه؟اون کنسول های سی شارپم فریم ورک می خوان؟

benyamin_pc
پنج شنبه 12 مرداد 1385, 10:53 صبح
راستی وقتی فایل رو با Xincode تغییر می دهیم سرعت تو فایل ایجاد شده نسبت به فایلی که با فریم کار می کرد پایین تر نمیاد؟؟

omid_Ahmadi
پنج شنبه 12 مرداد 1385, 11:55 صبح
برنامه رو مثلا رو یه دیسکت بزاریم و کامپیوتر رو ری استارت کنیم و حالا بخواهیم اون برنامه بالا بیاد اینجا چجوری این کار رو انجام بدیم؟


توی C# نمیشه از این جور شیرین کاریها کرد.



Xincode این بایل رو میسازه؟اون کنسول های سی شارپم فریم ورک می خوان؟


این رو توجه نشدم یعنی چی



راستی وقتی فایل رو با Xincode تغییر می دهیم سرعت تو فایل ایجاد شده نسبت به فایلی که با فریم کار می کرد پایین تر نمیاد؟؟


در موارد معدودی باعث میشه سرعت به مقدار خیلی کمی (نامحسوس) افزایش پیدا کنه. در ما بقی هم برابره.

benyamin_pc
پنج شنبه 12 مرداد 1385, 12:06 عصر
آقا امید درست متوجه نشدم وقتی از Xincode استفاده می کنیم در بعضی مواقع سرعت بالاتر میره یا وقتی اتفاده نمی کنیم؟از اون جمله هم منظورم این بود که اون فایل رو که بخواهیم به طور مستقل بالا بیاد رو با Xincode میشه ساخت؟؟
بعدش هم اون فایل های کنسول پس چی کارن اگه همشون فریم می خوان ؟پس دیگه چه کنسولی؟

omid_Ahmadi
پنج شنبه 12 مرداد 1385, 15:44 عصر
سرعت موقع استفاده از نرم افزارهایی که گفتید افزایش پیدا می کنه (البته در موارد معدود). برای درک دلیل این موضوع باید با نحوه ی اجرای برنامه های .NET به خصوص نقش JIT آشنا باشید. نمی دونم مطلبی در این مورد توی سایت هست یا نه (قبلا بوده، ممکنه الان پاک شده باشه). در هر صورت به زودی برای این مورد یه سری مطلب بهتون معرفی می کنم تا بتونه کمکتون کنه.
مورد دوم هم نه، یعنی جزء وظایف برنامه ای مثل اون، این کاری که شما گفتید نیست. در این کار صورت مسئله به طور کامل عوض میشه و مسلما روشها هم کاملا متفاوت. فقط می تونم بگم نوشتن برنامه هایی با این قابلیت به وسیله ی C# ممکن نیست.

در مورد برنامه های کنسول هم باید بگم، اون برنامه ها دقیقا همون برنامه های .NET هستن اما در مواردی به کار می رن که برنامه ذاتا به UI نیاز نداره. پس دلیلی نیست که این برنامه ها به صورت Stand Alone اجرا بشن.

benyamin_pc
پنج شنبه 12 مرداد 1385, 16:29 عصر
اون مطالبی که گفتین رو حتما بذارین چون آشنایی با اون مطالب اصلا ندارم
ممنون

Peyman_Ranjbar
شنبه 14 مرداد 1385, 04:55 صبح
آقا امید درست متوجه نشدم وقتی از Xincode استفاده می کنیم در بعضی مواقع سرعت بالاتر میره یا وقتی اتفاده نمی کنیم؟از اون جمله هم منظورم این بود که اون فایل رو که بخواهیم به طور مستقل بالا بیاد رو با Xincode میشه ساخت؟؟
بعدش هم اون فایل های کنسول پس چی کارن اگه همشون فریم می خوان ؟پس دیگه چه کنسولی؟
وقتی net. رو داخل فایل اجرایی embedding می کنیم(با استفاده از xenocode)هم حجم فایل خیلی بالا میره هم سرعت اجراش خیلی پایین میاد.گذشته از اینکه یه برنامه ساده رو تا بخواد تبدیل کنه کلی طول میکشه.خلاصه جوری هست که نمی صرفه .من که از خیرش گذشتم:گریه:

omid_Ahmadi
شنبه 14 مرداد 1385, 05:46 صبح
هم حجم فایل خیلی بالا میره هم سرعت اجراش خیلی پایین میاد.گذشته از اینکه یه برنامه ساده رو تا بخواد تبدیل کنه کلی طول میکشه


این مورد به خاطر ضعف برنامه ای هست که استفاده می کنید، ولی قاعدتا باید سرعت افزایش پیدا کنه. چون با این کار JIT به طور کامل حذف میشه و این خودش توی افزایش سرعت تاثیر داره (البته گفتم که، زیاد محسوس نیست و بیشتر افرادی که این کار رو می کنن بحث امنیت واسشون مطرحه).
برای نمونه می تونید از ابزار ngen که با SDK ارائه میشه استفاده کنید تا تاثیر این نوع کارها رو مشاهده کنید.

benyamin_pc
شنبه 14 مرداد 1385, 11:02 صبح
وای نه بالاخره سرعت میره بالا یا انقدر میاد پایین که باید بی خیالش شد؟؟
آقا امید خود برنامه Xenocode خوب نیس؟

omid_Ahmadi
شنبه 14 مرداد 1385, 15:13 عصر
آقا شما اصلا جنبه ی سرعت رو در نظر نگیر، فقط اگر ببین از لحاظ امنیتی لازم داری که این کار رو بکنی، خوب استفاده کن. اگر هم نه که به همون صورت عادی برنامه رو توزیع کن.

Peyman_Ranjbar
یک شنبه 15 مرداد 1385, 06:42 صبح
سلام
آقای احمدی یه سوال داشتم:می خواهم ببینم شما از xenocode برای این کار استفاده کردی؟

کاری که این برنامه انجام میده قسمتهای مورد نیاز از دات نت فریمورک رو توی فایل exe جاسازی میکنه(خودش هم گفته embedding .net framework )
پس قانونا سرعتش باید بیاد پایین.

در مورد ngen هم خدمتتون بگم که تنها کاری که می کنه یه image از فایل exe رو بسته به سیستمی که روش کار میکنید رو تبدیل به native code میکنه.وگرنه وابستگی به framework از بین نمی ره فقط برای هر بار اجرا نمی خواد که دوباره برنامه کامپایل بشه
پس در اینجا قانونا سرعت باید بالا بره