PDA

View Full Version : استفاده از برنامه های .net بدون framework



alirezador
یک شنبه 06 فروردین 1385, 17:05 عصر
چطوری میشه از برنامه های نوشته شده توسط .net بدون framework استفاده کرد

Hamedm
یک شنبه 06 فروردین 1385, 17:33 عصر
سلام


چطوری میشه از برنامه های نوشته شده توسط .net بدون framework استفاده کرداگه با C++.NET بنویسی میشه. اما با VB.NET و C# بعید میدونم.

در پناه حق موفق باشید و پرتوان

بابک زواری
یک شنبه 06 فروردین 1385, 21:04 عصر
چطوری میشه از برنامه های نوشته شده توسط .net بدون framework استفاده کرد

بدون دات نت که نمیشه ؛ اما مسئله رو اینطور ببینیم که آیا میشه DLL های مورد نیاز برنامه (اونایی رو که در رفرنس برنامه اضافه شده اند) رو هم همراه برنامه کپی کرد و برنامه نوشته شده تحت دات نت رو راه انداخت ؟ به احتمال قریب به یقین پاسخ منفیه ؛ چون فقط اون DLL ها نیستن و بعضی DLLهای دیگه دات رو هم باید بذاریم .
پس
1- اون DLLهای دیگه (و یا فایلهای غیر DLL ایی ) کدومها هستن ؟
2- فقط با یک کپی ساده مشکل حل میشه ؟ یا باید اونا رو هم بایک برنامه مثل Reasm.exe باید رجیستر کرد ؟
در صورتی که این مسئله رو بتونیم حل کنیم میشه یک برنامه نصاب فریم ورک نوشت .

یک مسئله جداگانه :
یک برنامه نوشتم که نصب بودن یا نبودن فریم ورک رو چک میکنه و کاربر نهایی میتونه با انتخاب از لیست اقدام به نصب یا نصب مجدد این فریم ورک بکنه ( بصورت Silent) یعنی بدون نمایش هیچ صفحه ایی ؛ خودش نیازی هم به دات نت نداره ؛ نیازی به فایل راه انداز دیگه نداره ؛ دوست داشتم در اختیار بقیه هم بذارم که متاسفانه حجمش 38 مگ هست .
یک روز قراری بذاریم بدیم دست چند نفر که بتونید بین همه پخشش کنید.

بابک زواری
یک شنبه 06 فروردین 1385, 21:06 عصر
البته حجم خودش خیلی کمه این فریم ورکها هستند که حجمش رو زیاد کردن.
اگر راه اندازهای دیگه ایی نظیر ADO و. . . هم نیازه بگید تا اضافه کنم.

mamadgmail
یک شنبه 06 فروردین 1385, 21:17 عصر
اگه با C++.NET بنویسی میشه.


سلام
ممکن بگید چطوری می شه این کار رو کرد؟؟؟

Hamedm
یک شنبه 06 فروردین 1385, 21:34 عصر
سلام

سلام
ممکن بگید چطوری می شه این کار رو کرد؟؟؟Win32 رو انتخاب کن.

در پناه حق موفق باشید و پرتوان

majid325
دوشنبه 07 فروردین 1385, 07:45 صبح
آیا در ویندوز ویستاهم نیازی به نسب کردن دات نت فریم ورک است؟

once4ever
دوشنبه 07 فروردین 1385, 12:48 عصر
آقای زواری میشه لطف کنید یه جایی upload کنید تا ماهم بتونیم دانلود کنیم.(درضمن فریم ورک 1.1 هم داره؟) شما لطف دارید ماهم سواستفاده میکنیم:چشمک:
اگه امکان ADO هم اضافه بشه که خیلی عالیه.

اینهایی که اینجا میگید از اون مطلبی که تو این پست (http://barnamenevis.org/forum/showthread.php?t=36829&page=6) گفتم داره دور میشه.

razavi_university
دوشنبه 07 فروردین 1385, 13:48 عصر
فکر کنم بشه با کپی کردن DLL ها مشکل رو حل کرد

alirezador
دوشنبه 07 فروردین 1385, 15:01 عصر
دوستان اگر قضیه کپی کردن dll ها باشه که او را install shield خیلی خوب حل میکنه ولی این مسئله که نیاز به install shield هم نباشه محمه

بابک زواری
دوشنبه 07 فروردین 1385, 15:54 عصر
فریم ورک 1.1 رو هم داره ؛ اما نمیتونم جایی آپلود کنم چون زمان زیادی میبره ؛ یک روز با هم قرار میذاریم که هم دیگه رو ببینیم و هم من اینا رو به دستتون برسونم

alirezador
دوشنبه 07 فروردین 1385, 17:52 عصر
آخه آقای زواری من یک برنامه نوشتم واسه یک نفر یک چیزه خیلی ساده وقتی که گفت چند مگابایت شد بهش گفتم کلا 50 mb طرف فکر کرد من چیزی حالیم نیست این قضیه framework نصب کردن را باید یک جوری حل کرد

Mehrafrooz
دوشنبه 07 فروردین 1385, 18:05 عصر
با سلام
همانطور که میدونید دات نت فریم ورک 2 بر روی ویندوز xp سرویس پک 2 نصب میشه و اگر سویس پک 2 نداشته باشه نصب نمیشه .
با توجه به گفته آقای حامد که برنامه های نوشته شده با ++vc نیازی به نصب فریم ورک نداره سوالی که برام پیش اومد اینه که برنامه های نوشته شده با ++vc رومیشه بر روی ویندوزهای بودن سرویس پک 2 و یا مثلا ویندوز 98 نصب کرد و برنامه رو اجرا کرد ؟

alirezador
دوشنبه 07 فروردین 1385, 18:14 عصر
من فکر میکن چیزی که آقا حامد میگن احتمال داره خیلی از امکانات دات نت را از ما بگیره چون تا اونجایی که من میدونم win32 برنامه هایی شبیه vb.6 را شامل میشه

once4ever
دوشنبه 07 فروردین 1385, 18:37 عصر
بله برنامه نویسی win32 با vc++.net همون برنامه نویسی ++ vc هست که درمحیط vs.net مینویسید و نه اینکه نتونید امکانات دات نت رو داشته باشید بلکه به اون راحتی که با vb.net or c#.net کار میکنید نیست و شما مستقیما باید از dll ها برای امکانات دات نت استفاده کنید.
ولی حداقل یک برنامه low level تحویلتون میده که دیگه به این راحتی برنامه های دات نت قابل دیکد شدن نیست. و رو هر سیستمی قابل اجراست

بابک زواری
دوشنبه 07 فروردین 1385, 19:16 عصر
ما که نمیخواهیم مسئله رو پاک کنیم و بریم سراغ ++C ؛ من میگم که از دات نت استفاده کنیم اما یک برنامه بیاد و این فریم ورک رو چک کنه اگر نبود نصبش کنه .
این برنامه هم نوشته شده ؛ زیاد هم سخت نبود چندتا چک کردن رجیستری و در نهایت صدا زدن فایل نصب فریم ورک با چند سوئیچ.
به نظر من از بحث داریم منحرف میشیم ؛ اینجا مسئله کپی کردن فایلهای فریم ورک واستفاده از اونا بدون نصب فریم ورک بود

Chabok
سه شنبه 08 فروردین 1385, 07:43 صبح
با سلام خدمت دوستان عزیز

راستش من یه راهی پیدا کرده بودم برای دات نت 1.1 که قبل از نصب برنامه چک میکرد دات نت نصبه یا نه ؟
کاملا هم درست بود .
حالا اگه دوستان اجازه بدهند میخواهم توضیحش رو بدم تا شاید بشه برای دات نت 2 هم یه کاریش کرد .

ابتدا دو فایل Setup.exe,setting.ini را دانلود کنید . (Setup.rar)
دانلود فایل های ضمیمه (http://barnamenevis.org/forum/attachment.php?attachmentid=2978&stc=1&d=1143521092)
و کنار فایل های setup برنامه کپی کنید (فایل Setup.exe را Replace نمایید)

و سپس دات نت فریم ورک 1.1 را هم کنار اینها کپی کنید (dotnetfx.exe)

http://barnamenevis.org/forum/attachment.php?attachmentid=2977&stc=1&d=1143521092

حالا هر وقت که فایل setup.exe را اجرا نمایید اگر دات نت 1.1 نصب باشه Setup برنامه اجرا میشه و اگر هم
نصب نباشه setup فریم ورک دات نت اجرا میشه و پس از نصب اون setup برنامه اجرا میشه .

امیدوارم مفید باشه و بشه یجوری در دات نت 2 هم استفاده کرد .

taherbaghal
سه شنبه 08 فروردین 1385, 08:27 صبح
دوست عزیز من فکر میکنم به راحتی میشه اینو تعمیم داد اینطور که من متوجه شدم شما تنظیمات رجیستری رو برای فریم ورک 1.1 چک میکنید خوب این کار رو برای فریم ورک2 انجامش بدین

Mohammad .net
سه شنبه 08 فروردین 1385, 10:43 صبح
چطوری میشه از برنامه های نوشته شده توسط .net بدون framework استفاده کرد


Xenocode 2006 این کار رو انجام میده !

Run anywhere: Native x86 executable generation allows your .NET application to run anywhere, with or without the Framework. (Windows 9x and NT4 targets not supported.)

http://www.xenocode.com/Products/Postbuild/

alirezador
سه شنبه 08 فروردین 1385, 15:01 عصر
دوست من xenocode کرکش موجود نیست بحث این xenocode تو یک تاپیک دیگه هست اگه خواستی آدرسش را بهت میدم

mamadgmail
پنج شنبه 10 فروردین 1385, 01:56 صبح
سلام این xenocode که لینکش رو دادن باید چیز جالبی باشه
that the Xenocode system supports 1.0, 1.1, and 2.0 applications.
حجمش 22مگ هستش. ولی باز من هم سوال آقا/خانم Mehrafrooz رو دارم
توی این سایت هم چیزی پیدا نکردم مسئله سرویس پک 2 چی می شه در مورد دات نت 2
البته منظورم راجب به برنامه های win32 نیستش منظورم Windows Application ها هستن

خوش باشید.

alirezador
پنج شنبه 10 فروردین 1385, 13:36 عصر
Xenocode 2006 این کار رو انجام میده !

اقا محمد قضیه xenocoder خودش تو یک تاپیک دیگه مونده و همه توش گیر کردن چون هیچ کس کرک نداره پس به درد نمی خوره اگه کرک این نرم افزار را داری به ما هم بده


من میگم که از دات نت استفاده کنیم اما یک برنامه بیاد و این فریم ورک رو چک کنه اگر نبود نصبش کنه .


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

M.kavyani
پنج شنبه 10 فروردین 1385, 14:25 عصر
دوست عزیز من فکر میکنم به راحتی میشه اینو تعمیم داد اینطور که من متوجه شدم شما تنظیمات رجیستری رو برای فریم ورک 1.1 چک میکنید خوب این کار رو برای فریم ورک2 انجامش بدین
با سلام
من این رو خوب نمی بینم. به این دلیل که فریم ورک 2 از فریم روک 1.1 هم پشتیبانی میکنه و دستورات اون رو اجرا میکنه. به عبارتی اگر ما برنامه رو با فریم ورک 1.1 نوشته باشم و این برنامه تحت فریم ورک 2 هم اجرا میشه. ولی اگر ما برنامه ای بنویسم که چک کنه که آیا فقط ورژن 1.1 نصب شده است یا خیر کار اشتباه است. چون ممکن است که فریم ورک 2 روی سیستم نصب باشد و برنامه ما فقط دنبال 1.1 بگردد. و درنتیجه دچار اشتباه میشویم.
برنامه های زیادی رو دیدم که چون فریم ورک 1.1 روی سیستمم نصب نبود ستاپ نکردند و میخواستند این رو نصب کنم در حالی که فریم ورک 2 روی سیستم نصب بود.
حالا یه سوال: اگر فردا فرسم ورک فرضا" 3 بیاید چی میشه؟؟؟:متفکر: آیا این برنامه کار میکند؟؟
در پناه حق موفق و کامروا باشید

بابک زواری
پنج شنبه 10 فروردین 1385, 15:47 عصر
اقا محمد قضیه xenocoder خودش تو یک تاپیک دیگه مونده و همه توش گیر کردن چون هیچ کس کرک نداره پس به درد نمی خوره اگه کرک این نرم افزار را داری به ما هم بده
آقای زواری حجم فریم ورک خیلی زیاده و من مطمئنم که هزاران فایل داره که اصلا در برنامه مابه کار نرفته و بطبع فریم ورک برای برنامه ما شاید مثلا از 10 فایل استفاده میکنه که بیش از یکی دو مگابایت بیشتر نیست واسه این مسئله که یک برنامه بیاد چک بکنه بطبع فکر میکنم خیلی راحت این مسئله حل بشه ولی راه خوبی نیست خوب به جای اون دیگه فریم ورک را به طرف میدیم که نصب بکنه

بله برای XenoCode یکاریش میکنم .
منم با شما موافقم و بحث اصلی این تاپیک هم اینه که بتونیم بدون نصب فریم ورک با تشخیص یکسری Dllهای عمومی فریم ورک و یکسری DLLهایی که در برنامه استفاده شده و نصب اونا برنامه رو راه بیاندازیم .
ولی در کل اگر این بحث هم به نتیجه نرسه و نشه که این کار رو کرد میشه با کمک این برنامه مشکل نبود فریم ورک رو تا حد زیادی که کاربر نهایی با اون درگیر نشه حل کرد.



با سلام
من این رو خوب نمی بینم. به این دلیل که فریم ورک 2 از فریم روک 1.1 هم پشتیبانی میکنه و دستورات اون رو اجرا میکنه. به عبارتی اگر ما برنامه رو با فریم ورک 1.1 نوشته باشم و این برنامه تحت فریم ورک 2 هم اجرا میشه. ولی اگر ما برنامه ای بنویسم که چک کنه که آیا فقط ورژن 1.1 نصب شده است یا خیر کار اشتباه است. چون ممکن است که فریم ورک 2 روی سیستم نصب باشد و برنامه ما فقط دنبال 1.1 بگردد. و درنتیجه دچار اشتباه میشویم.
برنامه های زیادی رو دیدم که چون فریم ورک 1.1 روی سیستمم نصب نبود ستاپ نکردند و میخواستند این رو نصب کنم در حالی که فریم ورک 2 روی سیستم نصب بود.
حالا یه سوال: اگر فردا فرسم ورک فرضا" 3 بیاید چی میشه؟؟؟:متفکر: آیا این برنامه کار میکند؟؟
در پناه حق موفق و کامروا باشید

من دقیق متوجه این قسمت نشدم ؛ یعنی آقای کاویانی میفرمایند که با وجود فریم ورک 2 برنامه هایی که با فریم ورک 1.1 نوشته شدن هم میتونن اجرا بشن یعنی برای اجرای این برنامه ها نیازی به فریم ورک 1.1 نیست ؟ اگر اینطوره مطمئن هستید ؟؟
واینکه ما چه نسخه ایی رو چک کنیم خوبه ؟

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

برای فریم ورک دو
آدرس SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727
فیلد Install
نوع REG_DWORD
مقدار 1

برای فریم ورک یک
آدرس SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322
فیلد Install
نوع REG_DWORD
مقدار 1

که البته با توجه به Revision فریم ورک ممکنه که مقدار آخر اعداد ریز در آدرس تغییر کند

بابک زواری
پنج شنبه 10 فروردین 1385, 15:51 عصر
در مورد XenoCode ایی که با نسخه 2005 در اکثر سایتهای هک کرک برای دانلود موجوده باید بگم که این نسخه از XenoCOde نسخه نهایی VS2005 رو پشتیبانی نمیکنه و نسخه جدید با اسم XenoCode PostBuild ارائه شده

once4ever
پنج شنبه 10 فروردین 1385, 15:57 عصر
من دقیق متوجه این قسمت نشدم ؛ یعنی آقای کاویانی میفرمایند که با وجود فریم ورک 2 برنامه هایی که با فریم ورک 1.1 نوشته شدن هم میتونن اجرا بشن یعنی برای اجرای این برنامه ها نیازی به فریم ورک 1.1 نیست ؟ اگر اینطوره مطمئن هستید ؟؟
بله اجرا میشن (طبیعیه که ورژن جدید ورژن قدیمی رو هم ساپورت کنه) ولی یه مشکل مسخره داره و اون اینکه installer هایی که با 1.1 درست شدند با 2 اجرا نمیشن و حتما باید 1.1 داشته باشن!!

بابک زواری
پنج شنبه 10 فروردین 1385, 16:03 عصر
بله اجرا میشن (طبیعیه که ورژن جدید ورژن قدیمی رو هم ساپورت کنه) ولی یه مشکل مسخره داره و اون اینکه installer هایی که با 1.1 درست شدند با 2 اجرا نمیشن و حتما باید 1.1 داشته باشن!!

آهان یعنی اگر برنامه نصاب رو در نظر نگیریم و فایلهای اجرایی رو داشته باشیم ( به تعبیری کپی دستی کنیم ) برنامه ایی که با دات نت 1.1 نوشته شده بدون دات نت 1.1 اجرا میشه ؟؟؟؟
مطمئن هستید شما ؟
این مسئله برای کامپوننتها هم صادقه ؟ یعنی کامپوننتهایی که با دات نت 1.1 هستند و برای اون نوشته شدن رو اگر در برنامه امون استفاده کنیم و برنامه رو با دات نت 2 کامپایل کنیم برای اجرا نیازی به دات نت 1.1 جهت اون کامپوننتها نیست ؟
اگر اینطور باشه :kaf:

once4ever
پنج شنبه 10 فروردین 1385, 16:29 عصر
این مسئله برای کامپوننتها هم صادقه ؟ یعنی کامپوننتهایی که با دات نت 1.1 هستند و برای اون نوشته شدن رو اگر در برنامه امون استفاده کنیم و برنامه رو با دات نت 2 کامپایل کنیم برای اجرا نیازی به دات نت 1.1 جهت اون کامپوننتها نیست ؟
اگر اینطور باشه :kaf:
اگه دقیقا همنام باشند (درتمام جزییات) قاعدتا نباید مشکلی داشته باشه. چون درنهایت فقط چندتا dll هستند.

alirezador
پنج شنبه 10 فروردین 1385, 18:23 عصر
من فکر نکنم کار بکنه چون اگر قرار بود کار بکنه پس چرا vs2005 برنامه های vs2003 را یک بار تبدیل میکنه بعد بازشون میکنه
شاید در بعضی از دستورات هم کار بکنه امتحان نکردم ولی احتمال زیاد میدم که در اکثر اونها کار نکنه
بد بختی ما اینه که واسه خودمون یک زبان برنامه نویسی نساختیم

M.kavyani
پنج شنبه 10 فروردین 1385, 18:24 عصر
من دقیق متوجه این قسمت نشدم ؛ یعنی آقای کاویانی میفرمایند که با وجود فریم ورک 2 برنامه هایی که با فریم ورک 1.1 نوشته شدن هم میتونن اجرا بشن یعنی برای اجرای این برنامه ها نیازی به فریم ورک 1.1 نیست ؟ اگر اینطوره مطمئن هستید ؟؟
واینکه ما چه نسخه ایی رو چک کنیم خوبه ؟
با سلام
بله دقیقا" همینی بود که شما برداشت کرده اید. بار ها و بار ها چک کرده ام و به هیچ مشکلی بر نخورده ام. در مورد کامپوننت ها هم جاهایی دیده ام که برای فریم ورک 2 سری جدید رو ارائه کرده اند ولی من با اون قدیمی ها هم مشکل نداشتم.
*
* به نظر من اگر بخواهد فریم ورک بعدی فریم ورک قبلی رو ساپورت نکنه باید قابلت هایی برایش در نظر گرفته شود تا یه هو این ارتباط قطه نشه و گرنه به علت وجود ارتباط بیشتر با فریم ورک قبلی علاقه کمتری به فریم ورک جدید نشان داده میشود. به عبارتی مایکروسافت فروش نخواهد داشت. چون خلی از برنامه ها باید مجددا" نوشته شوند و یا اینکه مجددا" کامپایل شوند که هزینه بر خواهد بود**

alirezador
پنج شنبه 10 فروردین 1385, 19:00 عصر
آقای کاویانی نتیجه گیری صحبتتون را لطفا بگید

M.kavyani
پنج شنبه 10 فروردین 1385, 22:53 عصر
آقای کاویانی نتیجه گیری صحبتتون را لطفا بگید
با سلام
چشم. حتما". چون احساس میکردم معنی رو رسوندم ادامه ندادم.
من حرفم اینه که اگر فریم ورک بعدی از فریم ورک قبلی حمایت نکند مشتری نخواهد داشت و یه هزینه ای باید پرداخت شود که این هزینه عموما" بر دوش مشتریان و استفاده کنند گان است که اگر این هزینه بالا و غیر قابل قبول باشد هرگز مشتری سراغ آن نمیرود. عموما" دو تا هزینه است یکی هزینه خرید نرم افزار جدید است . و دیگری هزینه تبدیل برنامه ها به سری جدید. البته نرم افزار هایی که در سطح کلان تولید می شوند. امیدوارم منظورم رو رسونده باشم. اگر نقصی دارد بفرمایید تا تکمیلش کنم.
در پناه حق موفق و کامروا باشید

HO457
جمعه 11 فروردین 1385, 00:04 صبح
محسن درست میگه، من هم تست کردم، با دات نت فریم ورک 2 تمامی برنامه هایی که روی نسخه های قبلی دات نت فریم ورک نوشته شدن اجرا میشن،‌ هم 1 و هم 1.1. الان دات نت فریم ورک 2 فقط دارم.

بابک زواری
جمعه 11 فروردین 1385, 10:02 صبح
خوب پس فعلا ما تمرکز رو روی دات نت 2 بذاریم ؛ من میگم وجود چه فایلهایی برای اجرای یک برنامه که در دات نت نوشته شده لازمه ؛ غیر از DLLهایی که به رفرنس اضافه شدن و با اونا کاری نداریم اون DLL های عمومی رو کسی لیستش رو داره ؟

alirezador
جمعه 11 فروردین 1385, 11:26 صبح
آقای زواری یک برنامه ای بود که وقتی تغییرات رو سیستم میدادیم و بعد reset میکردیم دوباره به حالت اول بر میگردوند حتی اگر برنامه ای را نصب میکردیم
فکر میکنید این جور برنامه ها می فهمن که چه فایلهایی کجا ذخیره میشن ؟
اگر ما بفهمیم که framework چه تغییراتی در سیستم میده یک مقدار از مشکلاتمون حل میشه

M.kavyani
جمعه 11 فروردین 1385, 12:36 عصر
آقای زواری یک برنامه ای بود که وقتی تغییرات رو سیستم میدادیم و بعد reset میکردیم دوباره به حالت اول بر میگردوند حتی اگر برنامه ای را نصب میکردیم
فکر میکنید این جور برنامه ها می فهمن که چه فایلهایی کجا ذخیره میشن ؟
اگر ما بفهمیم که framework چه تغییراتی در سیستم میده یک مقدار از مشکلاتمون حل میشه
ایا منظورت همون برنامه System restore است که همراه ویندوز است؟؟:متفکر:

بابک زواری
جمعه 11 فروردین 1385, 12:55 عصر
خوب هم فایلهایی کپی میشه و هم مقادیری در رجیستری ریخته میشه ؛
یعنی هر دو باید در بیاریم .
ولی اگر یک رفرنس از فایلهای فریم ورک رو گیر بیارم نصف راه رو رفتیم .

alirezador
جمعه 11 فروردین 1385, 14:18 عصر
خوب فکر میکنین بهترین راه واسه این مسئله چیه

mamadgmail
جمعه 11 فروردین 1385, 16:40 عصر
بله اجرا میشن (طبیعیه که ورژن جدید ورژن قدیمی رو هم ساپورت کنه) ولی یه مشکل مسخره داره و اون اینکه installer هایی که با 1.1 درست شدند با 2 اجرا نمیشن و حتما باید 1.1 داشته باشن!!
آقا من تست کردم قبلا این رو کار نمی کنه برنامه هایی رو که با دات نت 1.1 نوشته شده حتی اگر 2.2 نصب باشه Run نمی شن در ضمن من با خود برنامه اجرایی برنامه تست کردم نه فایل setup.
در ضمن راجب XenoCode می خواستم بگم اگر این تایپیک به نتیجه نرسید آیا بین برنامه نویس های اینجا کسی نیست که بتونه یک جوری اینو کرک کنه و یا حداقل راجبش بحث کنیم با هم به یک نتیجه ای برسیم (البته می دونم توی این فروم کسی حق نداره کرک بذاره و نمی دونم که آیا اصلا می شه که راجب کرک کردن یک برنامه بحث کرد یا نه ولی اینو می دونم که اگه من حتی بخوام این برنامه رو بخرم جدای از مسئله پولش هیچ راه پرداختی ندارم)

omid_Ahmadi
جمعه 11 فروردین 1385, 19:49 عصر
فرک کنم همه بودنید که فریم ورک .NET فقط شامل یه سری DLL نیست که چند تا کلاس توش باشه. مهمترین قسمت فریم ورک CLR اه که مسئوله اجرای برنامه هاییه که تحت .NET نوشته می شن. تا CLR در کامپیوتر مقصد نباشه، برنامه های نوشته شده با .NET نمی تونن اجرا بشن. چون برنامه های .NET به کد IL تبدیل میشن نه به Native پس قبل از اجرا به JIT نیاز دارن تا بتونه اونها رو به کد Native تبدیل کنه.
برای اینکه بفهمیم در یه برنامه ای که با .NET نوشته شده از چه DLL هایی استفاده شده می تونیم namespace هایی که در برنامه از اون استفاده شده رو توی MSDN پیدا کنیم و ببینیم که این Namespace در چه فایل اسمبلی قرار گرفته. بعدش اوون فایل اسمبلی رو توی آدرس زیر پیدا کنیم البته از اسم namespace هم میشه فهمید که در چه اسمبلی قرار داره(البته برای دسترسی به این فولدر ها باید از Command استفاده کنید چون خود ویندوز اجازه نمیده که به این فولدر ها دسترسی داشته باشید و میگه که انها وجود ندارند).

C:\Windows\Assembly

مثلا برنامه ای که به این صورت تعریف شده باشه:



using System;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


از DLLهای زیر استفاده کرده:

System.Dll در آدرس


C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5 c561934e089


System.Drawing.Dll در آدرس


C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0. 0__b03f5f7f11d50a3a


System.Windows.Forms در آدرس


C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\ 2.0.0.0__b77a5c561934e089


System.Data در آدرس


C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b7 7a5c561934e089


System.Text هم در آدرس مربوط به System.dll است.
تمام کلاسهایی که در این DLL ها وجود دارن به صورت IL هستن و قبل از اجرا شدن باید با استفاده از JIT به کد NAtive تبدیل بشن. البته میشه کاری کرد که به JIT احتیاجی نداشته باشن و اون هم اینکه که با ابزاری مثل ngen.exe اوون ها رو به کد native تبدیل کرده و توکامپیوتر save کنیم. این جوری وقتی CLR ببینه که کد native اوونها وجود داره دیگه نمیره از کد IL اونها استفاده کنه.
مشکل دیگه ای که وقتی بخواهیم برنامه بدون نصب شدن فریم ورک اجرا بشه به وجود می یاد اینه که باید ساختار فایل exe ی برنامه رو هم یه تغییراتی توش بدیم.
فایل exe ای که به وسیله ی کامپایلر C# برای یه برنامه ایجاد میشه، ساختارش شبیه فایل exe عادی است. اما در ابتدای اون فایل یعنی توی بخش .text یه دستور اسمبلی به صورت زیر اضافه می شه:



JMP _CorExeMain


این متد توی فایل MSCorEE.dll توی آدرس system32 است. پس یه ریفرنس به این فایل هم توی بخش .idata اضافه می شه. وقتی ویندوز بخواد این فایل رو اجرا کنه میره فایل mscoree.dll رو لود می کنه که متد CorExeMain رو کال کنه، این متد هم اگر تا حالا CLR اجرا نشده باشه، اوون رو اجرا می کنه تا CLR بیاد و کنترل برنامه رو بدست بگیره و فایل رو اجرا کنه.
خوب، پس برای اینکه یه برنامه رو بخواهیم بدون .NET اجرا کنیم باید کاری کنیم که به CLR نیازی نداشته باشه، بعد هم فایل رو به صورتی تغییر بدیم که دیگه نخواد متد _CorExeMain رو کال کنه. البته فکر کنم با تبدیل فایل با ngen.exe به کد native این قسمت درست بشه.
پس اول باید اون رو به کد native تبدیل کنیم که دیگه JIT نخواد. بعدش هم ساختار فایلی که کامپایلر میسازه رو به صورتی تغییر بدیم که یه ریفرنس از dll هایی که توش از اونها استفاده کردیم به ابتدای فایل اضافه بشه. (البته روش این یکی رو هیچی راجع بهش نمی دونم. اگه کسی از دوستان می دونه بگه. چون من فقط یه کم ساختار فایلهای .net رو بلدم و از ساختار exe های عادی چیزی نمی دونم)
تازه با همه ی این تفاصیل، اگر هم بتونیم این کار رو بکنیم، یعنی CLR رو کامل کنار زدیم پس از تمام امکاناتی که داره هم مثل GC، SideBySide Execution و ... نمی تونیم استفاده کنیم.
به خاطر همین فکر نکنم درست باشه کاری کنیم که یه برنامه بدون .NET اجرا بشه (البته اگر شدنی باشه).
موفق باشید.

omid_Ahmadi
جمعه 11 فروردین 1385, 20:00 عصر
خوب پس فعلا ما تمرکز رو روی دات نت 2 بذاریم ؛ من میگم وجود چه فایلهایی برای اجرای یک برنامه که در دات نت نوشته شده لازمه ؛ غیر از DLLهایی که به رفرنس اضافه شدن و با اونا کاری نداریم اون DLL های عمومی رو کسی لیستش رو داره ؟


بخشید آقای زواری من این پست رو متوجه نشده بودم.
توی .NET هیچ DLL ای وجود نداره که نشه بدون اوون برنامه نوشت (البته این در مورد DLL هایی که برای اجرای برنامه لازمه مثل MSCorEE.dll و یا فایلهای مربوط به CLR و یا ... صادق نیست).
مهمترین DLL ای که برنامه به اوون احتایج داره فایل mscorlib.dll است که نیم اسپیس System و چند تا نیم اسپیس دیگه توی اوون هستند. اگه همه ی دستورات using رو از بالای برنامه پاک کنید باز هم این فایل موقع کامپایل به برنامه اضافه می شه. برای اینکه این فایل اضافه نشه باید موقع کامپایل از سوییچ nostdlib استفاده کنید.




Run anywhere: Native x86 executable generation allows your .NET application to run anywhere, with or without the Framework. (Windows 9x and NT4 targets not supported


بهتره تا جایی که ممکنه از فریم ورک استفاده کنیم، مگه اینکه دیگه واقعا ضروری باشه، چون به این ترتیب کدی که ایجاد می کنیم همون کد unmanaged میشه و کلا CLR رو کنار زدیم.

MMAASS
جمعه 11 فروردین 1385, 22:03 عصر
دستتون درد نکنه آقای احمدی :تشویق:
خیلی قشتگ توضیح دادین
البته من نمی دونم که واقعا این طوریه یا نه :متفکر:
من یه چیز دیگه می خوام بپرسم که شاید یه کمی دور از موضوع تاپیک باشه و اونم اینه:
من دوست دارم یه مقدار net. و framework اون رو رو زیر ساختی یاد بگیرم مثل این چیزایی که توضیح دادین اگه آدرس یا کتابی (چه الکترونیکی چه غیر از اون) سراغ دارین لطف کنین به من هم بگین
پیشاپیش ازتون تشکر می کنم.

omid_Ahmadi
جمعه 11 فروردین 1385, 22:15 عصر
کتاب در این مورد زیاده، مثل Customizing Common Language Runtime With C# یا Inside IL Assambler یا کلی کتاب دیگه که فقط فریم ورک .NET رو توضیح دادن.
این دو تا کتاب که گفتم واسه MS Press بود.

ولی اگه بخوام فقط یه کتاب رو پیشنهاد بکنم، کتاب Applied .NET Framework Programming از Jeffry Richter رو میگم . اوون هم واسه Witellect ه که یکی از اعضای MS Press محسوب میشه. بهترین کتابی بود که تا حالا خوندم.
نسخه ی مربوط به .NET 2 اوون هم اومده که من هنوز نتونستم e-book یا حتی خود کتابشو پیدا کنم و بخرم (البته فکر کنم که به زودی خود کتابشو بگیرم). اسمه کتابه دومش C# Via CLR است. البته اوون رو به اسم Applied .NET Framework 2 هم میشناسن.

MMAASS
جمعه 11 فروردین 1385, 22:58 عصر
بابت معرفی کتابها ممنون
لینک سراغ ندارین؟ البته مقاله باشه با عرض پوزش هم چیزی غیر از مایکروسافت و msdn:خجالت:

mamadgmail
شنبه 12 فروردین 1385, 00:09 صبح
سلام
از این حرفایی که زده شد من راجب دات نت یک نتیجه ای گرفتم.
من قبلن فکر می کردم که زمانی که برنامه رو کامپایل می کنیم مستقیما به کد زبان ماشین تبدیل نمی شه و تبدیل MIL می شه و زمانی که اجرا می شه توسط CLR به کد زبان ماشین تبدیل می شه. من درست نتیجه گرفتم؟؟
اگه من درست نتیجه گرفتم پس این موضوع یکی از قابلیت های مهم دات نت هستش به خاطر اینکه روی سیستمی که فایل می خواد اجرا بشه کد زبان ماشین تولید می شه و در واقع مشکل
وابستگی به سخت افزار حل می شه؟؟

omid_Ahmadi
شنبه 12 فروردین 1385, 07:23 صبح
من قبلن فکر می کردم که زمانی که برنامه رو کامپایل می کنیم مستقیما به کد زبان ماشین تبدیل نمی شه و تبدیل MIL می شه و زمانی که اجرا می شه توسط CLR به کد زبان ماشین تبدیل می شه. من درست نتیجه گرفتم؟؟


زمانی که شما یه برنامه رو کامپایل می کنی به کد IL تبدیل میشه. بعد فایل اوون رو می بری توی یه کامپیوتر دیگه اجرا می کنی. فرض کنه برنامه ی تو دو تا فرم داره. وقتی کاربر برنامه رو اجرا می کنه اول فرم یک نشون اده می شه. پس CLR می یاد JIT رو اجرا می کنه و JIT هم می یاد فقط کد مربوط به فرم یک رو به native تبدیل می کنه. کد فرم دو زمانی به کد native تبدیل میشه که کاربر روی buttonای یا هر کنترل دیگه ای کلیک کنه و بخواد به فرم دو بره.
این طوری می تونم بگم که هر کلاس در .NET فقط وقتی به کد native تبدیل میشه که لازم باشه.
در ضمن وقتی که برنامه ی شما به کد native تبدیل شد، این کد توی RAM ذخیره میشه، پس با تموم شدن برنامه این کد هم پاک میشه و وقتی کاربر دو باره برنامه رو اجرا کرد، یک باره دیگه تمام اوون مراحل تکرار میشن. در مورد تاثیر این کار توی سرعت اجرای برنامه ها هم که میشه مفصل صحبت کرد.



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


رفع مشکل وابستگی به سخت افزار دلیل انجام این کار نبوده. اینکه کدها اول به یه زبان سطح میانی مثل IL کامپایل میشن بعد به کد native تبدیل میشن دلیل دیگه ای داشته که یکی از نتایج اوون هم رفع وابستگی به سخت افزاره. در ضمن این مورد یه قابلیت مهم محسوب نمیشه، چون در بعضی مواقع این کار نه تنها براتون فایده نداره بلکه ضرر هم داره. مثلا در برنامه هایی که به سرعت بالای اجرای دستورات احتیاج داری، معمولا پیشنهاد می کنن که از کد managed استفاده نکنی و فایلت رو به کد unmanaged تبدیل کنی.

omid_Ahmadi
شنبه 12 فروردین 1385, 07:26 صبح
بابت معرفی کتابها ممنون
لینک سراغ ندارین؟ البته مقاله باشه با عرض پوزش هم چیزی غیر از مایکروسافت و msdn:خجالت:


لینک اینترنتی برای اینها سراغ ندارم، اما اگه تو emule یه سرچ بکنی همشونو پیدا می کنی. اگر هم بخوای میتونم eD2k Link مربوط به این فایلها رو بهت بدم تا بتونی با emule یا edonkey دانلودشون کنی

بابک زواری
شنبه 12 فروردین 1385, 18:29 عصر
آقای احمدی ممنون از راهنمایتون ؛
در ضمن دوستان در مورد XenoCode فعلا هیچ جا منتشر نشده ؛ فعلا باید منتطر بمونیم

razavi_university
یک شنبه 13 فروردین 1385, 01:20 صبح
آقای احمدی من این قسمتو متوجه نشدم


زمانی که شما یه برنامه رو کامپایل می کنی به کد IL تبدیل میشه. بعد فایل اوون رو می بری توی یه کامپیوتر دیگه اجرا می کنی
CLR می یاد JIT رو اجرا می کنه و JIT هم می یاد فقط کد مربوط به فرم یک رو به native تبدیل می کنه

CLR از کجا میفهمه سیستم اول و دوم کدومه؟

omid_Ahmadi
یک شنبه 13 فروردین 1385, 14:54 عصر
آقای احمدی ممنون از راهنمایتون


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



CLR از کجا میفهمه سیستم اول و دوم کدومه؟


نمی دونم منظورتون از سیستم اول و دوم کدومه! ببینید مورد اینکه کدها به IL تبدیل مبشن و بعد موقع اجرا توی سیستم مقصد به کد نیتیو کانورت می شن که مشخصه! اگر مشکلی در این مورد دارید بفرمایید.

اما در مورد خود این کانورت شدن هم باید بگم که این طور نیست که اگر فرضا یه برنامه 10 تا فرم داره، یا بهتر بگم اگر فرضا یه برنامه 10 تا کلاس داره، به محض اینکه کاربر روی فایل برنامه کلیک کرد؛ همه ی کلاسها با هم کامپایل بشن بعد برنامه اجرا بشه.

فرض کنید وقتی کاربر روی فایل برنامه کلیک میکنه اول متد Main که در کلاس A هست باید اجرا بشه، بنابراین اول JIT میاد کلاس A رو به صورت کامل کامپایل می کنه و در رم قرار میده. بعد زمانی که در هر متدی از کلاس A کلاس B رو استفاده کنه، JIT میاد کلاس B رو کانورت میکنه و به همین ترتیب. یعنی فقط وقتی یه کلاس بخواد استفاده بشه به کد نیتیو تبدیل میشه.

سلماس
یک شنبه 13 فروردین 1385, 15:02 عصر
آقای احمدی در اینجا منظور فقط DLLها نیست بحث انتقال CLR هم هست در اونصورت چی ؟
میشه CLR رو هم آورد ؟
در ضمن میشه آدرس فایل Ngen.exe رو هم بفرمائید ؟ با VS نصب میشه یا باید جداگانه اونو گرفت ؟

سلماس
یک شنبه 13 فروردین 1385, 15:05 عصر
در ضمن آقای احمدی توضیحاتتون بسیار عالی بود ؛ اگر یکم مطالب بیشتر در اینباره بذارید خیلی ممنون میشیم.

alirezador
یک شنبه 13 فروردین 1385, 18:08 عصر
سلام دوستان من دارم کم کم به این نتیجه میرسم که .net داره کار دستمون میده و دارم 100 رحمت میفرستم به php خودمون
در حالت کلی همه شما میدونید که به غیر از کامپیوتر برنامه نویسان .net در هیچ کامپیوتری framework نیست یعنی تقریبا 90 %
و کمتر کسی خوشش میاد که یک برنامه 50 یا 60 مگابایتی را نصب کنه تا یک برنامه یک مگابایتی بالا بیاد یعنی واقعا دور از اقله
و حالا یک سوال پس این install shield چطوری میتونست framework را در برنامه جای بده ( البته خودم تا حالا موفق به امتحان کردنش نشدم)

once4ever
یک شنبه 13 فروردین 1385, 18:36 عصر
php چه ربطی به دات نت داره؟! (بجز مورد asp.net یعنی همه قدرت دات نت رو asp میدونی؟)
دور از عقل نیست ولی بنظرم برنامه دات نت خیلی قوی و کاربر پسند هست (بشرطی که برنامه نویس درست کارکنه) و زبانهای کمی میتونند جلوی ویژوالهای مایکروسافت مقاومت کنند (البته برلند یکی از قدرتهاست)
install shiled هیچوقت فریم ورک رو داخل برنامه شما جای نمیده. بلکه تو پروژه اینستالرش قسمت نصب فریم ورک رو هم میزاره که با برنامه تون اجرا میشه و نصب میشه!
(شرمنده بی ربط بود ;) )

mamadgmail
یک شنبه 13 فروردین 1385, 23:51 عصر
پس با این اوصافی که گفتن نرم افزارXenoCode مستقیما کد زبان ماشین رو تولید می کنه؟؟ این درسته؟؟ خوب پس بحث dll ها یک جورایی منتفی هستش چون حتما نیاز به CLR هست؟
حالا چطور می شه MIL رو به کد ربان ماشین تبدیل کرد؟ فکر کنم باید دنبال جواب این سوال بگردیم؟(البته من که نه استادای اینجا)

alirezador
دوشنبه 14 فروردین 1385, 00:12 صبح
آقای once4ever من در مورد کل برنامه نویسی صحبت کردم هیچ زبان برنامه نویسی چه تحت وب چه app به سادگی و قدرت و راحتی php نیست من از این لحاظ گفتم

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

Mehrafrooz
دوشنبه 14 فروردین 1385, 00:19 صبح
با سلام
ببخشید سوالی برای من پیش اومد :
مایکروسافت خودش چیکار می کنه ؟
برنامه هایی که مایکروسافت میده بیرون چرا به دات نت فریم ورک نیازی نداره ؟
مایکروسافت به چه زبانی برنامه هاش رو می نویسه ؟ اونکه اینهمه روی دات نت سرمایه گذاری کرده چرا خودش تو برنامه هاش از دات نت فریم ورک استفاده نمی کنه یا شایدم استفاده می کنه ولی چون سورسش دست خودشه پس می تونه کاری کنه که نیازی به نصب دات نت فریم ورک نباشه .
ممنون .

ali_kolahdoozan
دوشنبه 14 فروردین 1385, 05:28 صبح
اصلا وقتی آدم یه برنامه خوب می نویسه من که هر وقت نوشتم . یعنی برنامه ای که ملت بهش احتیاج دارن . می گم کیست رو بیار براش نصب می کنم . راحت . اگه برنامه خوب باشه و ملت بهش احساس نیاز کنند این کار رو می کنند در ضمن install shild نسخه 1.5 رو نصب می کنه واسه 2 فکری کردین برای net . 2005

once4ever
دوشنبه 14 فروردین 1385, 08:48 صبح
(میدونم از موضوع اصلی دور میشم ولی یه چیزای بدنیست گفته بشه )
من خیلی وقت پیش با ویژوال سی کارمیکردم که یک win32 application ایجاد میکرد. اکثر سیستمهای (بزرگ) مایکروسافت با این ویژوال طراحی میشه. اگه کارکرده باشید میبینید که آسون نیست و مثلا برای مدیریت یک button ساده باید خیلی کدبنویسید ولی یک زبان قدرتمند هست وبرنامه ساخته شده با اون تو هرویندوزی کارمیکنه بدون نیاز به چیزدیگه ای.
وقتی مایکروسافت اولین نسخه c#.net رو همزمان باvs.net مطرح کرد نمیخواست قدرت مارو زیاد کنه بلکه برعکس با ایجاد محیطی آسان و برنامه نویسی ساده موفق شدوابستگی کاربران رو به خودش بیشترکنه و نکته دیگه اش - که یادم هست اون زمان خیلی مقاله ها با این موضوع دیدم - این بود که سطح فکر برنامه نویسها به سمت سطح عملکرد vb و c# بره و به این طریق رغیب کمتری برای خودش داشته باشه. چرا هیچکس به فکرساختن چیزی شبیه office مایکروسافت نیست(به قیمت فروش این بسته توجه کنید)؟ این مجموعه با vc++ مدیریت شده و زبانهایی که بالا گفتم به سختی میتونند همچین چیزی بسازند. مایکروسافت همیشه به فکرایجادوابستگی هست و دات نت فریم ورک خوب تونسته اینکارو انجام بده گرچه همیشه منطقی وجودداشته که اونو توجیه کنه.
(یکم هم باربط حرف بزنم) چرا دنبال راهی هستید که برنامه تون دیگه به فریم ورک احتیاج نداشته باشه؟ اینکه یک مزیت بشمار میاد و تنها سختیش نصب فریم ورک هست که اونم با اینستالرها میتونید انجام بدید! این اشتباه هست کاری که مایکروسافت زورزده انجام بده شما بخواهید باهمون تکنولوژی برگردونید.
شرمنده

omid_Ahmadi
دوشنبه 14 فروردین 1385, 09:19 صبح
آقای احمدی در اینجا منظور فقط DLLها نیست بحث انتقال CLR هم هست در اونصورت چی ؟
میشه CLR رو هم آورد ؟


من که خدوتون عرض کردم CLR برای چی استفاده میشه و حتی چطور فراخوانی میشه. اول که برنامه می خواد اجرا بشه خط حاوی JMP _CorExeMain با فراخوانی متد _CorExeMain (ویا معادل اون _CorDllMain) باعث میشه که CLR اجرا بشه. بنابراین با حذف این خط دیگه CLR اجرا نخواهد شد. پس می تونید خودتون می تونید قسمت اجرای CLR رو از یه فایل حذف کنید. البته به این ترتیب باید کاری کنید که فایل نیازی به CLR نداشته باشه.



در ضمن میشه آدرس فایل Ngen.exe رو هم بفرمائید ؟ با VS نصب میشه یا باید جداگانه اونو گرفت ؟


با .NET Framework عرضه شده. یعنی اگر الان روی سیستم شما .NET نصبه، پس این فایل رو هم دارید. برای دسترسی به اوون هم می تونید از Visual Studio Command Prompt استفاده کنید. برای آدرسش هم توی فولدری که ویژوال استودیو نصب شده اسم این فایل رو سرچ کنید.



اگر یکم مطالب بیشتر در اینباره بذارید خیلی ممنون میشیم.


سعی می کنم که در اولین فرصت چند مقاله ای رو قبلا در این سایت در رابطه با معماری .NET و مدیریت حافظه در اون، گذاشته بودم رو به صورت PDF اینجا Upload کنم، تا اگر دوست داشتید بتونید استفاده کنید.



در حالت کلی همه شما میدونید که به غیر از کامپیوتر برنامه نویسان .net در هیچ کامپیوتری framework نیست یعنی تقریبا 90 %
و کمتر کسی خوشش میاد که یک برنامه 50 یا 60 مگابایتی را نصب کنه تا یک برنامه یک مگابایتی بالا بیاد یعنی واقعا دور از اقله
و حالا یک سوال پس این install shield چطوری میتونست framework را در برنامه جای بده


کی گفته که فقط توی کامپیوتر ماها .NET Framework نصبه؟ .NET Framework به صورت پیش فرض با ویندوز XP SP2 نصب میشه. در ضمن احتمال زیادی داری که یکی از برنامه ها قبلا اوون رو نصب کرده باشه.
شما این فکر رو نمی کنید که میشه با نصب یه برنامه ی 30 یا 40 مگابایتی، هر برنامه ای که با .NET نوشته میشه رو به راحتی XCOPY به یه سیستم دیگه منتقل کرد. با استفاده از این روش مزایایی برای افرادی که از برنامه استفاده می کنن به وجود می یاد که واقعا غیر قابل چشم پوشیه! مثالا اینکه به راحتی با حذف فولدر برنامه می تونن برنامه رو با کل اطلاعات اوون از سیستم حذف کنن، بدون اینکه فایلی از اوون توی سیستم باقی بمونه.



پس با این اوصافی که گفتن نرم افزارXenoCode مستقیما کد زبان ماشین رو تولید می کنه؟؟ این درسته؟؟ خوب پس بحث dll ها یک جورایی منتفی هستش چون حتما نیاز به CLR هست؟


بله، کاری که این نرم افزار میکنه اینه که کد برنامه و کد فایلهای DLL ای که به وسیله ی اون برنامه مورد استفاده قرار گرفته رو به کد نیتیو تبدیل میکنه به این ترتیب نیاز به JIT و GC از بین میره. منظورتون رو از اینکه دیگه DLL ها منتفی هستند رو متوجه نشدم.



حالا چطور می شه MIL رو به کد ربان ماشین تبدیل کرد؟ فکر کنم باید دنبال جواب این سوال بگردیم؟(البته من که نه استادای اینجا)


گفتم که، برای این کار می تونید از ngen استفاده کنید. این برنامه مسئول تولید کد نیتیو از کدهای IL هست.



آقای once4ever من در مورد کل برنامه نویسی صحبت کردم هیچ زبان برنامه نویسی چه تحت وب چه app به سادگی و قدرت و راحتی php نیست من از این لحاظ گفتم


بهتره مسیر بحث رو عوض نکنیم. ممنون



در مورد برنامه های .net هم این بزگترین ضعف .net هستش
میدونم محیط .net خوبه قدرتش زیاده از هر لحاظ خیلی خوبه ولی این قضیه framework خیلی افتضاه


من نمی دونم چرا شما فکر می کنید که این یه افتضاحه؟ شما اصلا در مورد مزایایی که این سیستم داره چیزی می دونید؟ مزایای این روش چند برابر معایب اونه. البته عیب اون این طور که شما میگید اینکه باید به کاربر بگیم یه فایل 30 یا 40 مگابایتی رو نصب کن تا از این به بعد بتونی تمام برنامه هایی رو که با .NET نوشته می شن رو فقط با دریافت فایل exe ی اوون بتونی استفاده کنی.



مایکروسافت خودش چیکار می کنه ؟
برنامه هایی که مایکروسافت میده بیرون چرا به دات نت فریم ورک نیازی نداره ؟
مایکروسافت به چه زبانی برنامه هاش رو می نویسه ؟ اونکه اینهمه روی دات نت سرمایه گذاری کرده چرا خودش تو برنامه هاش از دات نت فریم ورک استفاده نمی کنه یا شایدم استفاده می کنه ولی چون سورسش دست خودشه پس می تونه کاری کنه که نیازی به نصب دات نت فریم ورک نباشه .


برنامه هایی که مایکروسافت داده مثل Office یا VS یا ... معمولا قدیمیتر از .NET هستن و فکر کنم اونقدر بزرگ باشن که نشه به راحتی پلت فرم اونها رو تغییر داد. فکر کنم دلیل این مورد، همین باشه. ولی شما به سایتهاش نگاه کنید، تقریبا همه به .NET منتقل شدن.

niloufar
دوشنبه 14 فروردین 1385, 15:33 عصر
سلام
آقای احمدی من این ngen.exe رو در مسیر نصب vs8 پیدا نکردم.

niloufar
دوشنبه 14 فروردین 1385, 15:36 عصر
در ضمن حالا اگه ما با این ngen کدهامون رو به native تبدیل کنیم، ای یعنی چه؟ یعنی آیا وابستگی برنامه به CLR قطع میشه؟ آیا Framework نمیخوایم؟ البته می دونم قاعدتا جواب هر دو منفیه ولی نمیدونم پس این ngen چی کاره است!!!

omid_Ahmadi
دوشنبه 14 فروردین 1385, 20:42 عصر
من این ngen.exe رو در مسیر نصب vs8 پیدا نکردم.


لازم نیست این فایل رو پیدا کنید. توی فولدر Tools در فولدر Visual Studio 2005 تو منوی Start یه Visual Studio Command Prompt هست که توی اوون می تونید از دستور ngen برای تولید کد نیتیو استفاده کنید.



در ضمن حالا اگه ما با این ngen کدهامون رو به native تبدیل کنیم، ای یعنی چه؟


این یعنی اینکه کد فایل شما چه فایل DLL و چه فایل EXE به جای اینکه محتوی کد IL باشه، حاوی کد Native خواهد بود و دیگه لازم نیست CLR برای اینکه برنامه ی شما رو اجرا کنه از JIT استفاده کنه.
این وابستگی فایل شما رو به CLR قطع میکنه اما باز هم به فریم ورک نیاز دارید. چون فریم ورک دو قسمت داره، یکیش CLR هست که به این ترتیب دیگه به اون نیازی نخواهید داشت، اما دومیش Class Library هست که با Native کردن برنامه باز هم به کلاسهای توی اون احتیاج خواهید داشت. حالا اگه این فایلها خودشون حاوی کد IL باشن، پس اینا برای اجرا به CLR نیاز دارن و در نتیجه برنامه ی شما به CLR احتیاج خواهد داشت.



البته می دونم قاعدتا جواب هر دو منفیه ولی نمیدونم پس این ngen چی کاره است!!!


دلیل استفاده از ngen این نیست که نیاز به CLR رو رفع کنه. همون اول هم گفتم، فقط جایی باید قسمتهای مختلف CLR مثل JIT، GC و ... رو از کار بندازیم که بخواهیم به حداکثر سرعت اجرای برنامه دست پیدا کنیم. هر چه قدر هم که این ابزارها سریع و هوشمند کار کنن ولی باز هم مقداری از سرعت برنامه رو کم می کنن (البته این تو برنامه های خاصی خودش رو نشون می ده و اغلب به نظر نمیآد).
حال اگر برنامه ی شما یه کلاسی داشت که خواشتید اون کلاس با حداکثر سرعت برنامه کار کنه می تونید اون را با استفاده از ngen به کد نیتیو تبدیل کنید تا موقع اجرای متدهای این کلاس CLR بره کنار.
یکی دیگه از دلایل استفاده از ngen اینکه قسمتهایی رو که کدشون برامون خیلی مهمه و نمی خواهیم تحت هیچ شرایطی از دست بره رو با استفاده از این ابزار به زبان ماشین تبدیل کنیم. چون می دونید که امنیت کد IL از زبان ماشین خیلی کمتره.

niloufar
سه شنبه 15 فروردین 1385, 19:45 عصر
سلام
1- اطلاعاتتون تو این زمینه ها خیلی کامله، ممنون
2- آیا با توجه به فرمایشات شما دیگه با استفاده از ngen نیازی به برنامه هایی مثل XenoCode برای کد کردن اطلاعات نیست؟
3- اصلا چرا اساسا وقتی سرعت کدهای Native بالاتره، خود دات نت موقع کامپایل کد IL ایجاد میکنه؟
4- استفاده از ngen چه جوریه؟ البته ببخشید که بدون اینکه یه ذره باهاش ور برم پرسیدم، گفتم شاید بد نباشه بازم از اطلاعات شسته رفته شما استفاده کنم :-)

omid_Ahmadi
چهارشنبه 16 فروردین 1385, 15:39 عصر
آیا با توجه به فرمایشات شما دیگه با استفاده از ngen نیازی به برنامه هایی مثل XenoCode برای کد کردن اطلاعات نیست؟


من با نرم افزار XenoCode کار نکردم. اما این طور که از در مورد عملکرد این نرم افزار توی این تاپیک شنیدم، مراحلی که گفتم رو طی میکنه تا بتونه برنامه ی شما رو بدون .NET اجرا کنه.



اصلا چرا اساسا وقتی سرعت کدهای Native بالاتره، خود دات نت موقع کامپایل کد IL ایجاد میکنه؟


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



استفاده از ngen چه جوریه؟


از دستور ngen با سوییچ ? استفاده کنید، راهنماییتون می کنه.

niloufar
چهارشنبه 16 فروردین 1385, 17:59 عصر
سلام
1- بازم ممنون
2- منظور من از استفاده از XenoCode فقط حذف فریم ورک نبود. بیشتر منظورم از لحاظ امنیتی و کد کردن اطلاعات بود چون همه میدونیم در حال حاضر کدهای کامپایل شده دات نت به راحتی برگشت پذیرند و این از لحاظ امنیتی یعنی صفر. حالا برنامه هایی از قبیل XenoCode (علاوه بر حذف فریم ورک) کدها را هم غیر قابل بازگشت میکنند. میخواستم این را بدونم که آیا با Native کردن کدها، اطلاعات مثل زمان خدابیامرز VB6 از لحاظ برگشت پذیری تقریبا غیر ممکن میشن (البته غیر از تبدیل شدن به زبانهای سطح پایین مثل اسمبلی)
3- منتظر مقالتون می مونم. چون واقعا دلم میخواد بدونم چرا میکروسافت وقتی VS6 رو به VS.Net تبدیل کرد، اینقدر امنیت رو پایین آورد؟ حالا هم که شما میفرمایید از لحاظ سرعت هم که کدهای IL پایینتر از کدهای Native است. پس اصولا به چه دردی میخورن؟!!
4- در مورد دستور ngen هم البته ممنونم. ولی دیگه این سوئیچ را که بلدیم :- ( منظورم این بود که چیزهایی از این دست را بفرمایید که مثلا: آیا باید فایلهای کامپایل شده همگی تبدیل شوند یا فقط فایلهای Exe,Dll؟ آیا باید پیش از کامپایل استفاده کرد یا پس از کامپال؟ اگر به قول شما بخواهیم فقط بعضی از کلاسها را Native شده کامپایل کنیم چه؟ و تو این مایه سوالات...
5- بازم ممنون

ali_kolahdoozan
شنبه 19 فروردین 1385, 05:48 صبح
بالاخره چی شد ؟ چی کار باید کرد ؟

niloufar
شنبه 19 فروردین 1385, 18:19 عصر
سلام
منم موافقم که:

بالاخره چی شد ؟ چی کار باید کرد ؟

omid_Ahmadi
شنبه 19 فروردین 1385, 20:04 عصر
من فکر کردم با توضیحاتی که دادم دیگه مشخص شده که اصلا باید فریم ورک رو حذف کنیم یا نه. اما باز هم برای نتیجه گیری میگم.
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
استفاده از ابزارهایی که فریم ورک رو حذف می کنن مثل همین نرم افزاری که معرفی شد و یا انجام این کار به صورت دستی بهتره تا حد ممکن انجام نشه، چون تنها سودی که داره اینه که حجم برنامه رو کاهش میده، اما بدی هایی هم داره که به زودی در مورد اونها هم توضیح میدم.

ali_kolahdoozan
یک شنبه 20 فروردین 1385, 05:49 صبح
این خیلی خوبه . چون یه مشگل که نیست . از لحظه شروع نصب من باید مراحل زیر رو طی می کردم حالا برنامه نصب من 3 خط شد :
1- کاربر محترم net. frame work 2 را نصب کنید
2- کاربر محترم sql desktop engine رو هم حتما نصب کنید
3- برنامه خودتون رو هم که نوشتم کپی کنید روی هارد

این طوری خیلی خوبه در آخر هم می نویسم با عرض پوزش اینها همه تقصیر شرکت ماکروسافت است و به من ربطی نداره . آهان یادم رفت اول برنامه هم می نویسم . لطفا فقط افراد متخصص این برنامه رو نصب کنن . اینطوری خیلی خوب شد .

omid_Ahmadi
یک شنبه 20 فروردین 1385, 06:33 صبح
دوست من، من این توضیحات و در آخر نتیجه گیری رو برای افرادی گفتم که دلایل منطقی رو قبول می کنن. شما می تونید هر جور که دوست دارید برنامه تون رو بنویسید و هر جور هم که دوست دارین اوون رو توزیع کنید.

ali_kolahdoozan
یک شنبه 20 فروردین 1385, 07:19 صبح
نه منظورم شما نبودید . دست شما هم درد نکنه . منظورم گرفتاری ناشی از net . و 000 بود اینکه تقصیر شما یا دیگران نیست . منظورم مسائلی است که net. برای کاربراش پیش آورده . واقعا همینوطره که نوشتم خیلی از شرکتها یک نفر رو گرفتن اینطرف اونطرف میره برنامه هاشون رو نصب می کنه براشون

once4ever
یک شنبه 20 فروردین 1385, 09:50 صبح
من فکر کردم با توضیحاتی که دادم دیگه مشخص شده که اصلا باید فریم ورک رو حذف کنیم یا نه. اما باز هم برای نتیجه گیری میگم.
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
استفاده از ابزارهایی که فریم ورک رو حذف می کنن مثل همین نرم افزاری که معرفی شد و یا انجام این کار به صورت دستی بهتره تا حد ممکن انجام نشه، چون تنها سودی که داره اینه که حجم برنامه رو کاهش میده، اما بدی هایی هم داره که به زودی در مورد اونها هم توضیح میدم. موافقم.
ببینید راهی برای فرار از دات نت هم هست. شما چرا نمیرید با vb یا vc++ پروژه هاتون بنویسید؟!! ... هیچوقت تمام راحتیهایی که شما دوست دارید یکجا جمع نمیشوند.:لبخندساده

ali_kolahdoozan
یک شنبه 20 فروردین 1385, 09:59 صبح
این هم پیشنهاد جالبی است . اصلا صورت مسئله را پاک کنیم

taherbaghal
یک شنبه 20 فروردین 1385, 16:33 عصر
اصلا جالب نیست که صورت مساله رو پاک کنید
فکر یافتن راه بهتر باشید هر چند راه حل های حاضر بد نیستن

habedijoo
یک شنبه 20 فروردین 1385, 16:45 عصر
دوستان این سوال فقط یک جواب داره .

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

من نمیدانم چرا وقتی جواب یک سوالی منفی باشه به نظر میرسه که صورت مسئله پاک شده

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

It doesn't matter how many classes in the Framework your app uses. .NET apps are compiled to MSIL, not machine code. The MSIL must be compiled on-demand by the .NET JIT compiler. This compiler is part of the .NET Framework. No Framework means no compilation and no compilation means no execution.

niloufar
یک شنبه 20 فروردین 1385, 16:49 عصر
سلام
آقای احمدی لطفا یه نگاهی به پست 67 بیندازید و یه نیمچه توضیحی در مورد سوالات بدید
ممنون

برای اینکه لازم نباشه یه صفحه عقب برید اینم مطلبش:

سلام
1- بازم ممنون
2- منظور من از استفاده از XenoCode فقط حذف فریم ورک نبود. بیشتر منظورم از لحاظ امنیتی و کد کردن اطلاعات بود چون همه میدونیم در حال حاضر کدهای کامپایل شده دات نت به راحتی برگشت پذیرند و این از لحاظ امنیتی یعنی صفر. حالا برنامه هایی از قبیل XenoCode (علاوه بر حذف فریم ورک) کدها را هم غیر قابل بازگشت میکنند. میخواستم این را بدونم که آیا با Native کردن کدها، اطلاعات مثل زمان خدابیامرز VB6 از لحاظ برگشت پذیری تقریبا غیر ممکن میشن (البته غیر از تبدیل شدن به زبانهای سطح پایین مثل اسمبلی)
3- منتظر مقالتون می مونم. چون واقعا دلم میخواد بدونم چرا میکروسافت وقتی VS6 رو به VS.Net تبدیل کرد، اینقدر امنیت رو پایین آورد؟ حالا هم که شما میفرمایید از لحاظ سرعت هم که کدهای IL پایینتر از کدهای Native است. پس اصولا به چه دردی میخورن؟!!
4- در مورد دستور ngen هم البته ممنونم. ولی دیگه این سوئیچ را که بلدیم :- ( منظورم این بود که چیزهایی از این دست را بفرمایید که مثلا: آیا باید فایلهای کامپایل شده همگی تبدیل شوند یا فقط فایلهای Exe,Dll؟ آیا باید پیش از کامپایل استفاده کرد یا پس از کامپال؟ اگر به قول شما بخواهیم فقط بعضی از کلاسها را Native شده کامپایل کنیم چه؟ و تو این مایه سوالات...
5- بازم ممنون

omid_Ahmadi
یک شنبه 20 فروردین 1385, 16:58 عصر
به نظر من اوون پاسخی که توی اوون فوروم خارجی گفته شده میشه بهش گفت پاک کردن صورت مسئله، نه این چند صفحه صحبتی که در اینجا نوشته شده و مسئله رو کاملا بررسی کرده. در هر صورت بهتره که دیگه بحث اضافی در این مورد نکنیم.

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

http://www.barnamenevis.org/forum/showthread.php?p=213827#post213827

pooyanm
یک شنبه 16 مهر 1385, 14:07 عصر
سلام بحث واقعا جالبی بود ولی من هنوز به یک راه حل قطعی برای نوشتن با دات نت و اجرای مستقل از اون نرسیدم مشکل من به این شکله که:

من برای معرفی منابع یک برنامه Cross-Platform به ویندوز و لینوکس دو برنامه کوچک جداگانه نوشتم برای ویندوز با دلفی که مشکل .net هم نداره حالا من این برنامه کوچک را به C# 2005 تبدیل کردم فقط برای اینکه توسعه در این ساختار و Syntax شی گرا را به vb, Delphi, VC ترجیح می دم چون شباهت زیادی به Syntax جاوا داره. در نتیجه من فقط به خاطر ساختار نگارشی C# می خوام اونا جایگزین دلفی کنم. تاکید می کنم به کتابخانه ها و امکانات چندانی از C# نیاز ندارم فقط می خوام برنامه ام یک exe برای معرفی منابع داشته
باشه که سورس اون با ساختار زبان C# باشه.

حالا چه روشی برای اجرای بدون وابستگی به .netfx مناسب من هست.

در ضمن آیا C# Builder می تونه بدون نیاز به .net framework این Syntax را در اختیار من بذاره.

omid_Ahmadi
جمعه 21 مهر 1385, 08:48 صبح
در مورد C# Builder اطلاعی ندارم، اما فکر نمی کنم چنین قابلیتی داشته باشه، برای اجرای برنامه بدون .NET Framework اگر به این نتیجه رسیدید که حتما باید این کار رو انجام بدید، می تونید از eXno Code استفاده کنید (اگر اسمش رو درست نوشته باشم).

Microsoft.net
شنبه 22 مهر 1385, 22:52 عصر
در مورد سوالت اولی که گفته بودی می شه برنامه ای در دات نت نوشت که بدون فریم ورک کار کنه ؟ جوابت مثبته ولی یه شرط داره و اونم این که برنامتو باید در Unsafe Mode یا به تعبیری دیگه به صورت Unmanage Code بنویسی و چون این ویژگی فقط در زبانهای C Family قابل پیاده سازی از لحاظ طراحی کامپایلر هست در نتیجه در vb.net نمیشه همچین کاری رو انجام داد .

pooyanm
شنبه 22 مهر 1385, 23:18 عصر
در مورد سوالت اولی که گفته بودی می شه برنامه ای در دات نت نوشت که بدون فریم ورک کار کنه ؟ جوابت مثبته ولی یه شرط داره و اونم این که برنامتو باید در Unsafe Mode یا به تعبیری دیگه به صورت Unmanage Code بنویسی و چون این ویژگی فقط در زبانهای C Family قابل پیاده سازی از لحاظ طراحی کامپایلر هست در نتیجه در vb.net نمیشه همچین کاری رو انجام داد .
ممنونم این روش رو ترجیح می دم. می خواستم بی خیال c# بشم که این روش را پیشنهاد کردید اگه می شه کمی بیشتر توضیح بدید یا حداقل چند واژه کلیدی معرفی کنید تا خودم توی گوگل جستجو کنم.

linux
شنبه 22 مهر 1385, 23:38 عصر
سلام بحث واقعا جالبی بود ولی من هنوز به یک راه حل قطعی برای نوشتن با دات نت و اجرای مستقل از اون نرسیدم مشکل من به این شکله که:

من برای معرفی منابع یک برنامه Cross-Platform به ویندوز و لینوکس دو برنامه کوچک جداگانه نوشتم برای ویندوز با دلفی که مشکل .net هم نداره حالا من این برنامه کوچک را به C# 2005 تبدیل کردم فقط برای اینکه توسعه در این ساختار و Syntax شی گرا را به vb, Delphi, VC ترجیح می دم چون شباهت زیادی به Syntax جاوا داره. در نتیجه من فقط به خاطر ساختار نگارشی C# می خوام اونا جایگزین دلفی کنم. تاکید می کنم به کتابخانه ها و امکانات چندانی از C# نیاز ندارم فقط می خوام برنامه ام یک exe برای معرفی منابع داشته
باشه که سورس اون با ساختار زبان C# باشه.

حالا چه روشی برای اجرای بدون وابستگی به .netfx مناسب من هست.

در ضمن آیا C# Builder می تونه بدون نیاز به .net framework این Syntax را در اختیار من بذاره.
C# کتابخانه و امکانات چندانی نداره! اصلا میشه گفت C# کتابخانه ای نداره! شما هرچی استفاده می کنید بعنوان کتابخانه مربوط به .نت هست حالا اگر از C# خوشت می آید بشین یک کامپایلر برای خودت بنویس

Microsoft.net
یک شنبه 23 مهر 1385, 01:30 صبح
ببین دوست عزیز مطلبی که من گفتم فقط جواب سوالت بود ولی آیا استفاده از روش فوق به صورت روتین کار منطقی هست یا نه ؟ قطعا جواب نه هست چرا که اساس پلت فرم دات نت و ویژگیهای منحصر به فردش فقط زمانی میسره که بتونی از کلاسهای فریم ورک استفاده کنی
در مورد مود برنامه نویسی Unsafe اینو بگم که کدی که درش می نویسی دات نت به هیچ عنوان کنترلی روش نداره در نتیجه به طور مثال تمامی متغیر ها یا object ها تو باید به صورت اشاره گر تعریف کنی و با آدرس اونها در حافظه کار کنی و یا اینکه چون Garbage Collector ای دیگه وجود نداره Life cycle تمامی object هاتو باید خودت کنترل کنی و .... 1001 نکته دیگه عملا از unsafe در کاربردهای خاص استفاده می شه نه اینکه همیشه و به صورت روتین

omid_Ahmadi
یک شنبه 23 مهر 1385, 12:11 عصر
@Microsoft.NET:


در مورد سوالت اولی که گفته بودی می شه برنامه ای در دات نت نوشت که بدون فریم ورک کار کنه ؟ جوابت مثبته ولی یه شرط داره و اونم این که برنامتو باید در Unsafe Mode یا به تعبیری دیگه به صورت Unmanage Code بنویسی


***لطفا" شرط ادب را رعایت نمایید*** (مدیریت)
اولا کد Unsafe هیچ ربطی به کد Unmanaged نداره. ثانیا، دلیلی نداره برنامه ای که حاوی کد Unsafe و یا حتی Unmanaged باشه بدون نیاز به .NET Farmework اجرا بشه. در هر دو حال اجرای برنامه وابسته به وجود .NET Framework هست مگر اینکه با استفاده از ابزارهای خاصی مثل ngen و یا eXno Code برنامه به کد نیتیو تبدیل بشه.
روش انجام این کار و جزئیات اون هم توی این تاپیک شرح داده شده.



و چون این ویژگی فقط در زبانهای C Family قابل پیاده سازی از لحاظ طراحی کامپایلر هست در نتیجه در vb.net نمیشه همچین کاری رو انجام داد .


VB.NET و C# در این زمینه کاملا مشابه عمل می کنن (کدهای Unmanaged و اجرای برنامه های اون بدون نیاز به فریم ورک). فقط VC.NET می تونه کدهای ترکیبی هم داشته باشه (Managed و Unmanaged) که دو زبان دیگه نمی تونن.

@pooyanm:

در مورد روشهای استقلال برنامه نسبت به فریم ورک و روش اون توی همین تاپیک و تاپیکهای دیگه توضیح داده شده، در مورد اینکه C# Builder می تونه کد مستقل از فریم ورک تولید کنه هم جواب منفیه. در مورد تاپیک اولت هم دلیل اومدنت به سمت C# واضح نیست، بیشتر توضیح بده.



من برای معرفی منابع یک برنامه Cross-Platform به ویندوز و لینوکس دو برنامه کوچک جداگانه نوشتم برای ویندوز با دلفی که مشکل .net هم نداره ...

مهدی کرامتی
یک شنبه 23 مهر 1385, 12:32 عصر
یک راه اینه که برنامه ات رو با استفاده از برنامه کمکی NGEN که بهمراه وِیژوال استودیو دات نت ارائه میشه تبدیل به نسخه Native کنی.

نپرس چطوری، سایت برنامه نویس رو برای کلمه کلیدی NGEN جستجو کن.

pooyanm
دوشنبه 24 مهر 1385, 02:04 صبح
C# کتابخانه و امکانات چندانی نداره! اصلا میشه گفت C# کتابخانه ای نداره! شما هرچی استفاده می کنید بعنوان کتابخانه مربوط به .نت هست حالا اگر از C# خوشت می آید بشین یک کامپایلر برای خودت بنویس
دیر گفتی! من قبلا به این فکر افتادم یک موقعی یک سری طرح هایی هم در سر می پروراندم و این مرحله را پشت سر گذاشتم ولی انجام این کار به صورتی که به زودی قابل استفاده بشه از عهده یک نفر برنمیاد اگر شما چند نفر ایرانی علاقه مند به کار گروهی پیدا کردی! که روی پروژه ای که هیچ جای فروشی نداره در نتیجه Open Source ارائه می شه کار کنن من حاضرم در حد بضاعت همکاری کنم. اما حالا که من اون قدر انگلیسی تسلط ندارم که جای دیگه ای از دنیا دنبال درمان درد بگردم دلیل اینکه مزاحم C# شدم را می شه فهمید.

در مورد روشهای استقلال برنامه نسبت به فریم ورک و روش اون توی همین تاپیک و تاپیکهای دیگه توضیح داده شده
من هم خیلی از زحمات شما سپاسگذارم و فعلا روش ngen را برای کاربرد خودم مناسب تر دیدم.
در مورد تاپیک اولت هم دلیل اومدنت به سمت C# واضح نیست، بیشتر توضیح بده.توضیحی بیشتر از این ندارم که شخصا از کارکردن با Syntax دلفی متنفرم مخصوصا که با روش شی گرایی در دلفی به طور کامل آشنا نیستم و برنامه ای هم که نوشتم در حال گسترش به یکی دو هزار خطه که مثل یک کلاف سردرگم شده که هر بار می خوام تغییری در اون بدم با یک ساختاری که برای من نامانوسه و اصول شی گرایی زبان هم در اون لحاظ نشده روبرو می شم و این کار توسعه برنامه را کند کرده. پس با این شیوه نگارش C# بهتر می تونم کار را ادامه بدم.
نپرس چطوری، سایت برنامه نویس رو برای کلمه کلیدی NGEN جستجو کن.متاسفانه هنوز به مرحله پرسیدن اون سوال نرسیدم! من همیشه سعی می کنم جواب سوالاتم رو از جستجو در اینجا و گوگل بدست بیارم مگر سوالاتی که کمی جنبه تجربه شخصی داره و یا به دلیل اطلاعات کمم نمی دونم باید به دنبال چه واژه های کلیدی بگردم.

ولی من فعلا نتونستم ngen را پیدا کنم چون یک CD برای C# 2005 تهیه کردم و فقط همین زبان را نصب کردم. حالا هیچ جایی اثری از ngen نیست. اگر ممکنه بگید که برای این فایل کدوم یک از پنج سی دی را بگیرم. امیدوارم مجبور نشم هر 5 سی دی را بگیرم همین یکی به اندازه کافی منو دنبال خودش به همه اسرار دات نت رهنمون شده چه برسه به 5 تا!

amirsadeghi
سه شنبه 25 مهر 1385, 06:32 صبح
ولی این کا رها جواب نمیده ( لااقل رو سیستم من )
من بیشتر شو امتحان کردم

Inprise
سه شنبه 25 مهر 1385, 20:07 عصر
مطالبی که به موضوع یک تاپیک مربوط نیستند مطرح نکنید ، و جواب ندید .

rostamkhani
دوشنبه 01 آبان 1385, 01:33 صبح
آقا net framework 2 در همیه کامپیوترا نصب میشه یا نه

mehran_kashefi
چهارشنبه 16 اسفند 1385, 21:00 عصر
می شه؟ ولی حتما باید dll های آن برنامه هم قرار داد.

ar.shirazi
چهارشنبه 15 فروردین 1386, 19:15 عصر
پس نتیجه این بحث این شد :

عملا راه سریع ، راحت و مناسبی برای اجرای برنامه نوشته شده تحت دات نت بدون نصب بودن دات نت فریمورک وجود نداره

shahinghorbani
دوشنبه 22 مرداد 1386, 04:15 صبح
این insallsheild به همراه چه برنامه ای ارائه شده؟ در داخل .net وجود نداره؟؟

PC2st
چهارشنبه 24 مرداد 1386, 21:24 عصر
در داخل .net وجود نداره؟؟
نه، وجود ندارد.

Sub Zero
سه شنبه 25 دی 1386, 16:56 عصر
حداقل 5 ماه از ارسال اخرین پست میگذره . حتما تا حالا دوستان تجربیات مفیدی رو در این زمینه(بحث تاپیک) بدست آوردند . یکی از کاربرای این سایت (miladr (http://barnamenevis.org/forum/member.php?u=19175)) ابزار مفیدی رو برای استفاده از برنامه های دات نت بدون نیاز به .NetFramework پیدا کرده که توصیه میکنم یه نگاهی بهش بندازید .:
لینک تاپیک (http://barnamenevis.org/forum/showthread.php?t=91066)

sarnev6t
جمعه 12 بهمن 1386, 00:09 صبح
سلام اگه گذر کسی به اینجا افتاد یه سریم به این آدرس بزنه
http://barnamenevis.org/forum/showthread.php?p=459833#post459833

amytis
پنج شنبه 25 بهمن 1386, 04:35 صبح
بله میشه اینکارو کرد

XENOCODE POSTBUILD

http://www.xenocode.com/


.NET Reactor

هر دو اینکار رو میکنن

اما فایل اجرائی بسیار حجیم میشه

Nima_NF
پنج شنبه 25 بهمن 1386, 11:47 صبح
خوب احتمالا می دانید ، استفاده از این گونه ابزار Performance را به شدت پایین می آورند .

توصیه می کنم دوستان دات نت کار ، حتی برای افزودن به اطلاعاتشون هم که شده ، مقاله زیر را مطالعه کنند:
برنامه نویسی Native (بدون دات نت) یا managed (با دات نت) ؟ (http://barnamenevis.org/forum/showthread.php?t=94381)

Mahdi.Kiani
دوشنبه 29 بهمن 1386, 08:11 صبح
می تونید از eXno Code استفاده کنید (اگر اسمش رو درست نوشته باشم).


:

و یا eXno Code ..............




xenocode
.

hossein_abdn
سه شنبه 29 مرداد 1387, 16:20 عصر
من یه راه حل مناسبی برای خلاص شدن از نصب فریم ورک دارم.
برنامه ای هست به اسم Thinstall. این برنامه برای ساختن برنامه های پرتابله. با این برنامه می تونید برای ساختن یک پرتابل از برنامه خودتون استفاده کنید. کاری که این برنامه می کنه اینکه فریم ورک رو به صورت پرتابل روی دستگاه نصب می کنه و به راحتی برنامه ای رو که نوشتید اجرا می کنه.
در ضمن توی خود سایتش به صورت اختصاصی روش پرتابل کردن دات نت فریم ورک رو یاد داده. این برنامه رو خودم تستش کردم کار می کنه.
امید وارم ازش لذت ببرید.
:قهقهه:

navid_8x
سه شنبه 19 شهریور 1387, 02:18 صبح
سلام، من خودم عاشق syntax خوبه c# هستم، ولی چاره نیست. امیروارم ماکروسافت به مشکلات نصب دات نت رسیدگی کنه. شاید vista خودش دات نت رو داشته باشه.
من به دوستان عزیز پیشنهاد می کنم اگه می خواین با C++ کار کنن با ماله microsoft کار نکنن چون خیلی وقت گیره. C++Builder هم خیلی راحته هم به .net وابسته نیستش.

Saeed_script
شنبه 23 شهریور 1387, 20:58 عصر
دوای درد همه اینها Xenocode 2006 است ، dll هایی از net. که برنامه شما به آن احتیاج دارد ، را با dll ها و یا فایل های exe شما ادغام میکند.
در ضمن این نرم افزار dll ها را خیلی بهتر از Refelector باز می کند و
قابلیت مبهم سازی کد را نیز دارا می باشد !
!!!!!!!
:شیطان:

reza6384
جمعه 17 آبان 1387, 08:19 صبح
سلام.
ببخشید یه سوال برای من پیش اومد که شاید خیلی بدیهی باشه. ( ببخشید)

همه مون می دونیم که برنامه هایی که با Net. نوشته میشن Platform Independent هستن. یعنی وظیفه ( یا یکی از وظایف ) Net Framework. اینه که این فایل Exe ما رو که حاوی IL هست بگیره و با ابزارهایی که گفتین اونرو به کد Native ماشینی که داره روش اجرا میشه تبدیل کنه.

حالا یه سوال. این برنامه xencode که معرفی شد و ngen ، اگر ازش استفاده کنید و با اون یک فایل اجرایی exe به صورت native درست کنید ، آیا این فایل به دست آمده در کامپیوتر دیگری که به احتمال زیاد ممکنه Platform اش با سیستم شما فرق کنه اجرا میشه؟

ممنون.

Saeed_script
سه شنبه 21 آبان 1387, 14:52 عصر
سلام.
ببخشید یه سوال برای من پیش اومد که شاید خیلی بدیهی باشه. ( ببخشید)

همه مون می دونیم که برنامه هایی که با Net. نوشته میشن Platform Independent هستن. یعنی وظیفه ( یا یکی از وظایف ) Net Framework. اینه که این فایل Exe ما رو که حاوی IL هست بگیره و با ابزارهایی که گفتین اونرو به کد Native ماشینی که داره روش اجرا میشه تبدیل کنه.

حالا یه سوال. این برنامه xencode که معرفی شد و ngen ، اگر ازش استفاده کنید و با اون یک فایل اجرایی exe به صورت native درست کنید ، آیا این فایل به دست آمده در کامپیوتر دیگری که به احتمال زیاد ممکنه Platform اش با سیستم شما فرق کنه اجرا میشه؟

ممنون.

بله ، حق با شماست ، بدیهی است که در یک platform دیگه اجرا نمی شه ، این هم ضعف Net Framework. است ، که در زبان هایی مثل جاوا که از ماشین مجازی استفاده می کنند ، این مشکل حل شده. ولی Desktop Application های .net کجا و جاوا کجا؟!

C_Sharp_Dot_Net
شنبه 05 بهمن 1387, 04:28 صبح
ولی من فکر نمی کنم بشه
چون برای اجرای برنامه های دات نت نیاز به CLR و JIT هست اونا رو می خواید چه کار کنید
نه نمیشه باید دات نت نصب باشه

navidkhalilian
دوشنبه 10 فروردین 1388, 05:03 صبح
سلام دوستان من هم فکر می کنم که این کار انجام پذیر نیست.تا حالا توجه کردید که چرا برنامه install Shield زمان نصب به .NET FrameWork نیاز داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اگه این کار انجام می شد خود microsoft اون را مطرح می کرد و یا install Shield از اون راه استفاده می کرد.

تا حالا فکر کردید اگر فرهنگ لغت نبود هیچ کس نمی تونست زبان ها را به یکدیگر تبدیل کنه.حکایت .NET FrameWork هم مثل اون فرهنگ لغت اگه نباشه کد های دات نت به زبان ماشین تبدیل نمی شه.
با تشکر ITMICRO

mithridates
سه شنبه 11 فروردین 1388, 15:59 عصر
یک بدی دات نت هم این هست که سورس برنامه تو فایل exe هست با هر برنامه ای هم مخفی بشه کرکرها آنپک میکنند. البته سال 83 یا 84 که این موضوع رو به استادم گفتم گفت خوبه دیگه برنامه های تحت ویندوز هم OpenSource میشن !

razavi_university
چهارشنبه 12 فروردین 1388, 01:21 صبح
سورس همه برنامه در فایلهای اجرایی آنهاست ولی اکثر اونها Native است و به زبانی که نوشته شده نیست
دلیل وجود کدمیانی در فایلهای اجرایی دات نت فلسفه وجودی دات نت است که مزیت های آنها را تضمین می کند
بهتر است ابتدا دات نت را بشناسیم