آقای احمدی در اینجا منظور فقط DLLها نیست بحث انتقال CLR هم هست در اونصورت چی ؟
میشه CLR رو هم آورد ؟
در ضمن میشه آدرس فایل Ngen.exe رو هم بفرمائید ؟ با VS نصب میشه یا باید جداگانه اونو گرفت ؟
Printable View
آقای احمدی در اینجا منظور فقط DLLها نیست بحث انتقال CLR هم هست در اونصورت چی ؟
میشه CLR رو هم آورد ؟
در ضمن میشه آدرس فایل Ngen.exe رو هم بفرمائید ؟ با VS نصب میشه یا باید جداگانه اونو گرفت ؟
در ضمن آقای احمدی توضیحاتتون بسیار عالی بود ؛ اگر یکم مطالب بیشتر در اینباره بذارید خیلی ممنون میشیم.
سلام دوستان من دارم کم کم به این نتیجه میرسم که .net داره کار دستمون میده و دارم 100 رحمت میفرستم به php خودمون
در حالت کلی همه شما میدونید که به غیر از کامپیوتر برنامه نویسان .net در هیچ کامپیوتری framework نیست یعنی تقریبا 90 %
و کمتر کسی خوشش میاد که یک برنامه 50 یا 60 مگابایتی را نصب کنه تا یک برنامه یک مگابایتی بالا بیاد یعنی واقعا دور از اقله
و حالا یک سوال پس این install shield چطوری میتونست framework را در برنامه جای بده ( البته خودم تا حالا موفق به امتحان کردنش نشدم)
php چه ربطی به دات نت داره؟! (بجز مورد asp.net یعنی همه قدرت دات نت رو asp میدونی؟)
دور از عقل نیست ولی بنظرم برنامه دات نت خیلی قوی و کاربر پسند هست (بشرطی که برنامه نویس درست کارکنه) و زبانهای کمی میتونند جلوی ویژوالهای مایکروسافت مقاومت کنند (البته برلند یکی از قدرتهاست)
install shiled هیچوقت فریم ورک رو داخل برنامه شما جای نمیده. بلکه تو پروژه اینستالرش قسمت نصب فریم ورک رو هم میزاره که با برنامه تون اجرا میشه و نصب میشه!
(شرمنده بی ربط بود ;) )
پس با این اوصافی که گفتن نرم افزارXenoCode مستقیما کد زبان ماشین رو تولید می کنه؟؟ این درسته؟؟ خوب پس بحث dll ها یک جورایی منتفی هستش چون حتما نیاز به CLR هست؟
حالا چطور می شه MIL رو به کد ربان ماشین تبدیل کرد؟ فکر کنم باید دنبال جواب این سوال بگردیم؟(البته من که نه استادای اینجا)
آقای once4ever من در مورد کل برنامه نویسی صحبت کردم هیچ زبان برنامه نویسی چه تحت وب چه app به سادگی و قدرت و راحتی php نیست من از این لحاظ گفتم
در مورد برنامه های .net هم این بزگترین ضعف .net هستش
میدونم محیط .net خوبه قدرتش زیاده از هر لحاظ خیلی خوبه ولی این قضیه framework خیلی افتضاه
البته اینا حرف چرند چون ما مجبوریم با .net کار کنیم
در ضمن آیا خود میکروسافت واسه این مسئله کاری انجام نداده
با سلام
ببخشید سوالی برای من پیش اومد :
مایکروسافت خودش چیکار می کنه ؟
برنامه هایی که مایکروسافت میده بیرون چرا به دات نت فریم ورک نیازی نداره ؟
مایکروسافت به چه زبانی برنامه هاش رو می نویسه ؟ اونکه اینهمه روی دات نت سرمایه گذاری کرده چرا خودش تو برنامه هاش از دات نت فریم ورک استفاده نمی کنه یا شایدم استفاده می کنه ولی چون سورسش دست خودشه پس می تونه کاری کنه که نیازی به نصب دات نت فریم ورک نباشه .
ممنون .
اصلا وقتی آدم یه برنامه خوب می نویسه من که هر وقت نوشتم . یعنی برنامه ای که ملت بهش احتیاج دارن . می گم کیست رو بیار براش نصب می کنم . راحت . اگه برنامه خوب باشه و ملت بهش احساس نیاز کنند این کار رو می کنند در ضمن install shild نسخه 1.5 رو نصب می کنه واسه 2 فکری کردین برای net . 2005
(میدونم از موضوع اصلی دور میشم ولی یه چیزای بدنیست گفته بشه )
من خیلی وقت پیش با ویژوال سی کارمیکردم که یک win32 application ایجاد میکرد. اکثر سیستمهای (بزرگ) مایکروسافت با این ویژوال طراحی میشه. اگه کارکرده باشید میبینید که آسون نیست و مثلا برای مدیریت یک button ساده باید خیلی کدبنویسید ولی یک زبان قدرتمند هست وبرنامه ساخته شده با اون تو هرویندوزی کارمیکنه بدون نیاز به چیزدیگه ای.
وقتی مایکروسافت اولین نسخه C#.net رو همزمان باvs.net مطرح کرد نمیخواست قدرت مارو زیاد کنه بلکه برعکس با ایجاد محیطی آسان و برنامه نویسی ساده موفق شدوابستگی کاربران رو به خودش بیشترکنه و نکته دیگه اش - که یادم هست اون زمان خیلی مقاله ها با این موضوع دیدم - این بود که سطح فکر برنامه نویسها به سمت سطح عملکرد vb و C# بره و به این طریق رغیب کمتری برای خودش داشته باشه. چرا هیچکس به فکرساختن چیزی شبیه office مایکروسافت نیست(به قیمت فروش این بسته توجه کنید)؟ این مجموعه با vC++ مدیریت شده و زبانهایی که بالا گفتم به سختی میتونند همچین چیزی بسازند. مایکروسافت همیشه به فکرایجادوابستگی هست و دات نت فریم ورک خوب تونسته اینکارو انجام بده گرچه همیشه منطقی وجودداشته که اونو توجیه کنه.
(یکم هم باربط حرف بزنم) چرا دنبال راهی هستید که برنامه تون دیگه به فریم ورک احتیاج نداشته باشه؟ اینکه یک مزیت بشمار میاد و تنها سختیش نصب فریم ورک هست که اونم با اینستالرها میتونید انجام بدید! این اشتباه هست کاری که مایکروسافت زورزده انجام بده شما بخواهید باهمون تکنولوژی برگردونید.
شرمنده
من که خدوتون عرض کردم CLR برای چی استفاده میشه و حتی چطور فراخوانی میشه. اول که برنامه می خواد اجرا بشه خط حاوی JMP _CorExeMain با فراخوانی متد _CorExeMain (ویا معادل اون _CorDllMain) باعث میشه که CLR اجرا بشه. بنابراین با حذف این خط دیگه CLR اجرا نخواهد شد. پس می تونید خودتون می تونید قسمت اجرای CLR رو از یه فایل حذف کنید. البته به این ترتیب باید کاری کنید که فایل نیازی به CLR نداشته باشه.نقل قول:
آقای احمدی در اینجا منظور فقط DLLها نیست بحث انتقال CLR هم هست در اونصورت چی ؟
میشه CLR رو هم آورد ؟
با .NET Framework عرضه شده. یعنی اگر الان روی سیستم شما .NET نصبه، پس این فایل رو هم دارید. برای دسترسی به اوون هم می تونید از Visual Studio Command Prompt استفاده کنید. برای آدرسش هم توی فولدری که ویژوال استودیو نصب شده اسم این فایل رو سرچ کنید.نقل قول:
در ضمن میشه آدرس فایل Ngen.exe رو هم بفرمائید ؟ با VS نصب میشه یا باید جداگانه اونو گرفت ؟
سعی می کنم که در اولین فرصت چند مقاله ای رو قبلا در این سایت در رابطه با معماری .NET و مدیریت حافظه در اون، گذاشته بودم رو به صورت PDF اینجا Upload کنم، تا اگر دوست داشتید بتونید استفاده کنید.نقل قول:
اگر یکم مطالب بیشتر در اینباره بذارید خیلی ممنون میشیم.
کی گفته که فقط توی کامپیوتر ماها .NET Framework نصبه؟ .NET Framework به صورت پیش فرض با ویندوز XP SP2 نصب میشه. در ضمن احتمال زیادی داری که یکی از برنامه ها قبلا اوون رو نصب کرده باشه.نقل قول:
در حالت کلی همه شما میدونید که به غیر از کامپیوتر برنامه نویسان .net در هیچ کامپیوتری framework نیست یعنی تقریبا 90 %
و کمتر کسی خوشش میاد که یک برنامه 50 یا 60 مگابایتی را نصب کنه تا یک برنامه یک مگابایتی بالا بیاد یعنی واقعا دور از اقله
و حالا یک سوال پس این install shield چطوری میتونست framework را در برنامه جای بده
شما این فکر رو نمی کنید که میشه با نصب یه برنامه ی 30 یا 40 مگابایتی، هر برنامه ای که با .NET نوشته میشه رو به راحتی XCOPY به یه سیستم دیگه منتقل کرد. با استفاده از این روش مزایایی برای افرادی که از برنامه استفاده می کنن به وجود می یاد که واقعا غیر قابل چشم پوشیه! مثالا اینکه به راحتی با حذف فولدر برنامه می تونن برنامه رو با کل اطلاعات اوون از سیستم حذف کنن، بدون اینکه فایلی از اوون توی سیستم باقی بمونه.
بله، کاری که این نرم افزار میکنه اینه که کد برنامه و کد فایلهای DLL ای که به وسیله ی اون برنامه مورد استفاده قرار گرفته رو به کد نیتیو تبدیل میکنه به این ترتیب نیاز به JIT و GC از بین میره. منظورتون رو از اینکه دیگه DLL ها منتفی هستند رو متوجه نشدم.نقل قول:
پس با این اوصافی که گفتن نرم افزارXenoCode مستقیما کد زبان ماشین رو تولید می کنه؟؟ این درسته؟؟ خوب پس بحث dll ها یک جورایی منتفی هستش چون حتما نیاز به CLR هست؟
گفتم که، برای این کار می تونید از ngen استفاده کنید. این برنامه مسئول تولید کد نیتیو از کدهای IL هست.نقل قول:
حالا چطور می شه MIL رو به کد ربان ماشین تبدیل کرد؟ فکر کنم باید دنبال جواب این سوال بگردیم؟(البته من که نه استادای اینجا)
بهتره مسیر بحث رو عوض نکنیم. ممنوننقل قول:
آقای once4ever من در مورد کل برنامه نویسی صحبت کردم هیچ زبان برنامه نویسی چه تحت وب چه app به سادگی و قدرت و راحتی php نیست من از این لحاظ گفتم
من نمی دونم چرا شما فکر می کنید که این یه افتضاحه؟ شما اصلا در مورد مزایایی که این سیستم داره چیزی می دونید؟ مزایای این روش چند برابر معایب اونه. البته عیب اون این طور که شما میگید اینکه باید به کاربر بگیم یه فایل 30 یا 40 مگابایتی رو نصب کن تا از این به بعد بتونی تمام برنامه هایی رو که با .NET نوشته می شن رو فقط با دریافت فایل exe ی اوون بتونی استفاده کنی.نقل قول:
در مورد برنامه های .net هم این بزگترین ضعف .net هستش
میدونم محیط .net خوبه قدرتش زیاده از هر لحاظ خیلی خوبه ولی این قضیه framework خیلی افتضاه
برنامه هایی که مایکروسافت داده مثل Office یا VS یا ... معمولا قدیمیتر از .NET هستن و فکر کنم اونقدر بزرگ باشن که نشه به راحتی پلت فرم اونها رو تغییر داد. فکر کنم دلیل این مورد، همین باشه. ولی شما به سایتهاش نگاه کنید، تقریبا همه به .NET منتقل شدن.نقل قول:
مایکروسافت خودش چیکار می کنه ؟
برنامه هایی که مایکروسافت میده بیرون چرا به دات نت فریم ورک نیازی نداره ؟
مایکروسافت به چه زبانی برنامه هاش رو می نویسه ؟ اونکه اینهمه روی دات نت سرمایه گذاری کرده چرا خودش تو برنامه هاش از دات نت فریم ورک استفاده نمی کنه یا شایدم استفاده می کنه ولی چون سورسش دست خودشه پس می تونه کاری کنه که نیازی به نصب دات نت فریم ورک نباشه .
سلام
آقای احمدی من این ngen.exe رو در مسیر نصب vs8 پیدا نکردم.
در ضمن حالا اگه ما با این ngen کدهامون رو به native تبدیل کنیم، ای یعنی چه؟ یعنی آیا وابستگی برنامه به CLR قطع میشه؟ آیا Framework نمیخوایم؟ البته می دونم قاعدتا جواب هر دو منفیه ولی نمیدونم پس این ngen چی کاره است!!!
لازم نیست این فایل رو پیدا کنید. توی فولدر Tools در فولدر Visual Studio 2005 تو منوی Start یه Visual Studio Command Prompt هست که توی اوون می تونید از دستور ngen برای تولید کد نیتیو استفاده کنید.نقل قول:
من این ngen.exe رو در مسیر نصب vs8 پیدا نکردم.
این یعنی اینکه کد فایل شما چه فایل DLL و چه فایل EXE به جای اینکه محتوی کد IL باشه، حاوی کد Native خواهد بود و دیگه لازم نیست CLR برای اینکه برنامه ی شما رو اجرا کنه از JIT استفاده کنه.نقل قول:
در ضمن حالا اگه ما با این ngen کدهامون رو به native تبدیل کنیم، ای یعنی چه؟
این وابستگی فایل شما رو به CLR قطع میکنه اما باز هم به فریم ورک نیاز دارید. چون فریم ورک دو قسمت داره، یکیش CLR هست که به این ترتیب دیگه به اون نیازی نخواهید داشت، اما دومیش Class Library هست که با Native کردن برنامه باز هم به کلاسهای توی اون احتیاج خواهید داشت. حالا اگه این فایلها خودشون حاوی کد IL باشن، پس اینا برای اجرا به CLR نیاز دارن و در نتیجه برنامه ی شما به CLR احتیاج خواهد داشت.
دلیل استفاده از ngen این نیست که نیاز به CLR رو رفع کنه. همون اول هم گفتم، فقط جایی باید قسمتهای مختلف CLR مثل JIT، GC و ... رو از کار بندازیم که بخواهیم به حداکثر سرعت اجرای برنامه دست پیدا کنیم. هر چه قدر هم که این ابزارها سریع و هوشمند کار کنن ولی باز هم مقداری از سرعت برنامه رو کم می کنن (البته این تو برنامه های خاصی خودش رو نشون می ده و اغلب به نظر نمیآد).نقل قول:
البته می دونم قاعدتا جواب هر دو منفیه ولی نمیدونم پس این ngen چی کاره است!!!
حال اگر برنامه ی شما یه کلاسی داشت که خواشتید اون کلاس با حداکثر سرعت برنامه کار کنه می تونید اون را با استفاده از ngen به کد نیتیو تبدیل کنید تا موقع اجرای متدهای این کلاس CLR بره کنار.
یکی دیگه از دلایل استفاده از ngen اینکه قسمتهایی رو که کدشون برامون خیلی مهمه و نمی خواهیم تحت هیچ شرایطی از دست بره رو با استفاده از این ابزار به زبان ماشین تبدیل کنیم. چون می دونید که امنیت کد IL از زبان ماشین خیلی کمتره.
سلام
1- اطلاعاتتون تو این زمینه ها خیلی کامله، ممنون
2- آیا با توجه به فرمایشات شما دیگه با استفاده از ngen نیازی به برنامه هایی مثل XenoCode برای کد کردن اطلاعات نیست؟
3- اصلا چرا اساسا وقتی سرعت کدهای Native بالاتره، خود دات نت موقع کامپایل کد IL ایجاد میکنه؟
4- استفاده از ngen چه جوریه؟ البته ببخشید که بدون اینکه یه ذره باهاش ور برم پرسیدم، گفتم شاید بد نباشه بازم از اطلاعات شسته رفته شما استفاده کنم :-)
من با نرم افزار XenoCode کار نکردم. اما این طور که از در مورد عملکرد این نرم افزار توی این تاپیک شنیدم، مراحلی که گفتم رو طی میکنه تا بتونه برنامه ی شما رو بدون .NET اجرا کنه.نقل قول:
آیا با توجه به فرمایشات شما دیگه با استفاده از ngen نیازی به برنامه هایی مثل XenoCode برای کد کردن اطلاعات نیست؟
بحث در این مورد خیلی مفصله. سعی می مکنم که به زودی یه مقاله در این مورد توی سایت آپلود کنم.نقل قول:
اصلا چرا اساسا وقتی سرعت کدهای Native بالاتره، خود دات نت موقع کامپایل کد IL ایجاد میکنه؟
از دستور ngen با سوییچ ? استفاده کنید، راهنماییتون می کنه.نقل قول:
استفاده از ngen چه جوریه؟
سلام
1- بازم ممنون
2- منظور من از استفاده از XenoCode فقط حذف فریم ورک نبود. بیشتر منظورم از لحاظ امنیتی و کد کردن اطلاعات بود چون همه میدونیم در حال حاضر کدهای کامپایل شده دات نت به راحتی برگشت پذیرند و این از لحاظ امنیتی یعنی صفر. حالا برنامه هایی از قبیل XenoCode (علاوه بر حذف فریم ورک) کدها را هم غیر قابل بازگشت میکنند. میخواستم این را بدونم که آیا با Native کردن کدها، اطلاعات مثل زمان خدابیامرز VB6 از لحاظ برگشت پذیری تقریبا غیر ممکن میشن (البته غیر از تبدیل شدن به زبانهای سطح پایین مثل اسمبلی)
3- منتظر مقالتون می مونم. چون واقعا دلم میخواد بدونم چرا میکروسافت وقتی VS6 رو به VS.Net تبدیل کرد، اینقدر امنیت رو پایین آورد؟ حالا هم که شما میفرمایید از لحاظ سرعت هم که کدهای IL پایینتر از کدهای Native است. پس اصولا به چه دردی میخورن؟!!
4- در مورد دستور ngen هم البته ممنونم. ولی دیگه این سوئیچ را که بلدیم :- ( منظورم این بود که چیزهایی از این دست را بفرمایید که مثلا: آیا باید فایلهای کامپایل شده همگی تبدیل شوند یا فقط فایلهای Exe,Dll؟ آیا باید پیش از کامپایل استفاده کرد یا پس از کامپال؟ اگر به قول شما بخواهیم فقط بعضی از کلاسها را Native شده کامپایل کنیم چه؟ و تو این مایه سوالات...
5- بازم ممنون
بالاخره چی شد ؟ چی کار باید کرد ؟
سلام
منم موافقم که:
نقل قول:
نوشته شده توسط ali_kolahdoozan
من فکر کردم با توضیحاتی که دادم دیگه مشخص شده که اصلا باید فریم ورک رو حذف کنیم یا نه. اما باز هم برای نتیجه گیری میگم.
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
استفاده از ابزارهایی که فریم ورک رو حذف می کنن مثل همین نرم افزاری که معرفی شد و یا انجام این کار به صورت دستی بهتره تا حد ممکن انجام نشه، چون تنها سودی که داره اینه که حجم برنامه رو کاهش میده، اما بدی هایی هم داره که به زودی در مورد اونها هم توضیح میدم.
این خیلی خوبه . چون یه مشگل که نیست . از لحظه شروع نصب من باید مراحل زیر رو طی می کردم حالا برنامه نصب من 3 خط شد :
1- کاربر محترم net. frame work 2 را نصب کنید
2- کاربر محترم sql desktop engine رو هم حتما نصب کنید
3- برنامه خودتون رو هم که نوشتم کپی کنید روی هارد
این طوری خیلی خوبه در آخر هم می نویسم با عرض پوزش اینها همه تقصیر شرکت ماکروسافت است و به من ربطی نداره . آهان یادم رفت اول برنامه هم می نویسم . لطفا فقط افراد متخصص این برنامه رو نصب کنن . اینطوری خیلی خوب شد .
دوست من، من این توضیحات و در آخر نتیجه گیری رو برای افرادی گفتم که دلایل منطقی رو قبول می کنن. شما می تونید هر جور که دوست دارید برنامه تون رو بنویسید و هر جور هم که دوست دارین اوون رو توزیع کنید.
نه منظورم شما نبودید . دست شما هم درد نکنه . منظورم گرفتاری ناشی از net . و 000 بود اینکه تقصیر شما یا دیگران نیست . منظورم مسائلی است که net. برای کاربراش پیش آورده . واقعا همینوطره که نوشتم خیلی از شرکتها یک نفر رو گرفتن اینطرف اونطرف میره برنامه هاشون رو نصب می کنه براشون
موافقم.نقل قول:
من فکر کردم با توضیحاتی که دادم دیگه مشخص شده که اصلا باید فریم ورک رو حذف کنیم یا نه. اما باز هم برای نتیجه گیری میگم.
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
استفاده از ابزارهایی که فریم ورک رو حذف می کنن مثل همین نرم افزاری که معرفی شد و یا انجام این کار به صورت دستی بهتره تا حد ممکن انجام نشه، چون تنها سودی که داره اینه که حجم برنامه رو کاهش میده، اما بدی هایی هم داره که به زودی در مورد اونها هم توضیح میدم.
ببینید راهی برای فرار از دات نت هم هست. شما چرا نمیرید با vb یا vC++ پروژه هاتون بنویسید؟!! ... هیچوقت تمام راحتیهایی که شما دوست دارید یکجا جمع نمیشوند.:لبخندساده
این هم پیشنهاد جالبی است . اصلا صورت مسئله را پاک کنیم
اصلا جالب نیست که صورت مساله رو پاک کنید
فکر یافتن راه بهتر باشید هر چند راه حل های حاضر بد نیستن
دوستان این سوال فقط یک جواب داره .
بدون نصب دات نت فریم ورک برنامه هایی که با نسخه های دات نت نوشته میشوند اجرا نمیشود .
من نمیدانم چرا وقتی جواب یک سوالی منفی باشه به نظر میرسه که صورت مسئله پاک شده
من این سوال رو در فوروم خارجی مطرح کردم و اینو رو در جوابم نوشتن . ( البته بقیه جوابها هم چنین چیزی بود )
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.
سلام
آقای احمدی لطفا یه نگاهی به پست 67 بیندازید و یه نیمچه توضیحی در مورد سوالات بدید
ممنون
برای اینکه لازم نباشه یه صفحه عقب برید اینم مطلبش:
نقل قول:
نوشته شده توسط niloufar
به نظر من اوون پاسخی که توی اوون فوروم خارجی گفته شده میشه بهش گفت پاک کردن صورت مسئله، نه این چند صفحه صحبتی که در اینجا نوشته شده و مسئله رو کاملا بررسی کرده. در هر صورت بهتره که دیگه بحث اضافی در این مورد نکنیم.
خانم نیلوفر، مقاله ای که گفته بودم رو در تاپیک زیر آپلود کردم. شما و دوستان دیگه اگه خواستن می تونن از اوون استفاده کنن.
اگر هم سوالی در زمینه ی مطالب داخل اون بود و یا قسمتیش نامفهوم بود در ادامه ی همون تاپیک بنویسید.
http://www.barnamenevis.org/sh...827#post213827
سلام بحث واقعا جالبی بود ولی من هنوز به یک راه حل قطعی برای نوشتن با دات نت و اجرای مستقل از اون نرسیدم مشکل من به این شکله که:
من برای معرفی منابع یک برنامه Cross-Platform به ویندوز و لینوکس دو برنامه کوچک جداگانه نوشتم برای ویندوز با دلفی که مشکل .net هم نداره حالا من این برنامه کوچک را به C# 2005 تبدیل کردم فقط برای اینکه توسعه در این ساختار و Syntax شی گرا را به vb, Delphi, VC ترجیح می دم چون شباهت زیادی به Syntax جاوا داره. در نتیجه من فقط به خاطر ساختار نگارشی C# می خوام اونا جایگزین دلفی کنم. تاکید می کنم به کتابخانه ها و امکانات چندانی از C# نیاز ندارم فقط می خوام برنامه ام یک exe برای معرفی منابع داشته
باشه که سورس اون با ساختار زبان C# باشه.
حالا چه روشی برای اجرای بدون وابستگی به .netfx مناسب من هست.
در ضمن آیا C# Builder می تونه بدون نیاز به .net framework این Syntax را در اختیار من بذاره.
در مورد C# Builder اطلاعی ندارم، اما فکر نمی کنم چنین قابلیتی داشته باشه، برای اجرای برنامه بدون .NET Framework اگر به این نتیجه رسیدید که حتما باید این کار رو انجام بدید، می تونید از eXno Code استفاده کنید (اگر اسمش رو درست نوشته باشم).
در مورد سوالت اولی که گفته بودی می شه برنامه ای در دات نت نوشت که بدون فریم ورک کار کنه ؟ جوابت مثبته ولی یه شرط داره و اونم این که برنامتو باید در Unsafe Mode یا به تعبیری دیگه به صورت Unmanage Code بنویسی و چون این ویژگی فقط در زبانهای C Family قابل پیاده سازی از لحاظ طراحی کامپایلر هست در نتیجه در vb.net نمیشه همچین کاری رو انجام داد .
ممنونم این روش رو ترجیح می دم. می خواستم بی خیال C# بشم که این روش را پیشنهاد کردید اگه می شه کمی بیشتر توضیح بدید یا حداقل چند واژه کلیدی معرفی کنید تا خودم توی گوگل جستجو کنم.نقل قول:
نوشته شده توسط Microsoft.net
C# کتابخانه و امکانات چندانی نداره! اصلا میشه گفت C# کتابخانه ای نداره! شما هرچی استفاده می کنید بعنوان کتابخانه مربوط به .نت هست حالا اگر از C# خوشت می آید بشین یک کامپایلر برای خودت بنویسنقل قول:
نوشته شده توسط pooyanm
ببین دوست عزیز مطلبی که من گفتم فقط جواب سوالت بود ولی آیا استفاده از روش فوق به صورت روتین کار منطقی هست یا نه ؟ قطعا جواب نه هست چرا که اساس پلت فرم دات نت و ویژگیهای منحصر به فردش فقط زمانی میسره که بتونی از کلاسهای فریم ورک استفاده کنی
در مورد مود برنامه نویسی Unsafe اینو بگم که کدی که درش می نویسی دات نت به هیچ عنوان کنترلی روش نداره در نتیجه به طور مثال تمامی متغیر ها یا object ها تو باید به صورت اشاره گر تعریف کنی و با آدرس اونها در حافظه کار کنی و یا اینکه چون Garbage Collector ای دیگه وجود نداره Life cycle تمامی object هاتو باید خودت کنترل کنی و .... 1001 نکته دیگه عملا از unsafe در کاربردهای خاص استفاده می شه نه اینکه همیشه و به صورت روتین
@Microsoft.NET:
***لطفا" شرط ادب را رعایت نمایید*** (مدیریت)نقل قول:
در مورد سوالت اولی که گفته بودی می شه برنامه ای در دات نت نوشت که بدون فریم ورک کار کنه ؟ جوابت مثبته ولی یه شرط داره و اونم این که برنامتو باید در Unsafe Mode یا به تعبیری دیگه به صورت Unmanage Code بنویسی
اولا کد Unsafe هیچ ربطی به کد Unmanaged نداره. ثانیا، دلیلی نداره برنامه ای که حاوی کد Unsafe و یا حتی Unmanaged باشه بدون نیاز به .NET Farmework اجرا بشه. در هر دو حال اجرای برنامه وابسته به وجود .NET Framework هست مگر اینکه با استفاده از ابزارهای خاصی مثل ngen و یا eXno Code برنامه به کد نیتیو تبدیل بشه.
روش انجام این کار و جزئیات اون هم توی این تاپیک شرح داده شده.
VB.NET و C# در این زمینه کاملا مشابه عمل می کنن (کدهای Unmanaged و اجرای برنامه های اون بدون نیاز به فریم ورک). فقط VC.NET می تونه کدهای ترکیبی هم داشته باشه (Managed و Unmanaged) که دو زبان دیگه نمی تونن.نقل قول:
و چون این ویژگی فقط در زبانهای C Family قابل پیاده سازی از لحاظ طراحی کامپایلر هست در نتیجه در vb.net نمیشه همچین کاری رو انجام داد .
@pooyanm:
در مورد روشهای استقلال برنامه نسبت به فریم ورک و روش اون توی همین تاپیک و تاپیکهای دیگه توضیح داده شده، در مورد اینکه C# Builder می تونه کد مستقل از فریم ورک تولید کنه هم جواب منفیه. در مورد تاپیک اولت هم دلیل اومدنت به سمت C# واضح نیست، بیشتر توضیح بده.
نقل قول:
من برای معرفی منابع یک برنامه Cross-Platform به ویندوز و لینوکس دو برنامه کوچک جداگانه نوشتم برای ویندوز با دلفی که مشکل .net هم نداره ...
یک راه اینه که برنامه ات رو با استفاده از برنامه کمکی NGEN که بهمراه وِیژوال استودیو دات نت ارائه میشه تبدیل به نسخه Native کنی.
نپرس چطوری، سایت برنامه نویس رو برای کلمه کلیدی NGEN جستجو کن.
دیر گفتی! من قبلا به این فکر افتادم یک موقعی یک سری طرح هایی هم در سر می پروراندم و این مرحله را پشت سر گذاشتم ولی انجام این کار به صورتی که به زودی قابل استفاده بشه از عهده یک نفر برنمیاد اگر شما چند نفر ایرانی علاقه مند به کار گروهی پیدا کردی! که روی پروژه ای که هیچ جای فروشی نداره در نتیجه Open Source ارائه می شه کار کنن من حاضرم در حد بضاعت همکاری کنم. اما حالا که من اون قدر انگلیسی تسلط ندارم که جای دیگه ای از دنیا دنبال درمان درد بگردم دلیل اینکه مزاحم C# شدم را می شه فهمید.نقل قول:
C# کتابخانه و امکانات چندانی نداره! اصلا میشه گفت C# کتابخانه ای نداره! شما هرچی استفاده می کنید بعنوان کتابخانه مربوط به .نت هست حالا اگر از C# خوشت می آید بشین یک کامپایلر برای خودت بنویس
من هم خیلی از زحمات شما سپاسگذارم و فعلا روش ngen را برای کاربرد خودم مناسب تر دیدم.نقل قول:
در مورد روشهای استقلال برنامه نسبت به فریم ورک و روش اون توی همین تاپیک و تاپیکهای دیگه توضیح داده شده
توضیحی بیشتر از این ندارم که شخصا از کارکردن با Syntax دلفی متنفرم مخصوصا که با روش شی گرایی در دلفی به طور کامل آشنا نیستم و برنامه ای هم که نوشتم در حال گسترش به یکی دو هزار خطه که مثل یک کلاف سردرگم شده که هر بار می خوام تغییری در اون بدم با یک ساختاری که برای من نامانوسه و اصول شی گرایی زبان هم در اون لحاظ نشده روبرو می شم و این کار توسعه برنامه را کند کرده. پس با این شیوه نگارش C# بهتر می تونم کار را ادامه بدم.نقل قول:
در مورد تاپیک اولت هم دلیل اومدنت به سمت C# واضح نیست، بیشتر توضیح بده.
متاسفانه هنوز به مرحله پرسیدن اون سوال نرسیدم! من همیشه سعی می کنم جواب سوالاتم رو از جستجو در اینجا و گوگل بدست بیارم مگر سوالاتی که کمی جنبه تجربه شخصی داره و یا به دلیل اطلاعات کمم نمی دونم باید به دنبال چه واژه های کلیدی بگردم.نقل قول:
نپرس چطوری، سایت برنامه نویس رو برای کلمه کلیدی NGEN جستجو کن.
ولی من فعلا نتونستم ngen را پیدا کنم چون یک CD برای C# 2005 تهیه کردم و فقط همین زبان را نصب کردم. حالا هیچ جایی اثری از ngen نیست. اگر ممکنه بگید که برای این فایل کدوم یک از پنج سی دی را بگیرم. امیدوارم مجبور نشم هر 5 سی دی را بگیرم همین یکی به اندازه کافی منو دنبال خودش به همه اسرار دات نت رهنمون شده چه برسه به 5 تا!
ولی این کا رها جواب نمیده ( لااقل رو سیستم من )
من بیشتر شو امتحان کردم
مطالبی که به موضوع یک تاپیک مربوط نیستند مطرح نکنید ، و جواب ندید .
آقا net framework 2 در همیه کامپیوترا نصب میشه یا نه
می شه؟ ولی حتما باید dll های آن برنامه هم قرار داد.
پس نتیجه این بحث این شد :
عملا راه سریع ، راحت و مناسبی برای اجرای برنامه نوشته شده تحت دات نت بدون نصب بودن دات نت فریمورک وجود نداره
این insallsheild به همراه چه برنامه ای ارائه شده؟ در داخل .net وجود نداره؟؟
نه، وجود ندارد.نقل قول:
در داخل .net وجود نداره؟؟
حداقل 5 ماه از ارسال اخرین پست میگذره . حتما تا حالا دوستان تجربیات مفیدی رو در این زمینه(بحث تاپیک) بدست آوردند . یکی از کاربرای این سایت (miladr) ابزار مفیدی رو برای استفاده از برنامه های دات نت بدون نیاز به .NetFramework پیدا کرده که توصیه میکنم یه نگاهی بهش بندازید .:
لینک تاپیک
سلام اگه گذر کسی به اینجا افتاد یه سریم به این آدرس بزنه
https://barnamenevis.org/showth...833#post459833
بله میشه اینکارو کرد
XENOCODE POSTBUILD
http://www.xenocode.com/
.NET Reactor
هر دو اینکار رو میکنن
اما فایل اجرائی بسیار حجیم میشه
خوب احتمالا می دانید ، استفاده از این گونه ابزار Performance را به شدت پایین می آورند .
توصیه می کنم دوستان دات نت کار ، حتی برای افزودن به اطلاعاتشون هم که شده ، مقاله زیر را مطالعه کنند:
برنامه نویسی Native (بدون دات نت) یا managed (با دات نت) ؟
من یه راه حل مناسبی برای خلاص شدن از نصب فریم ورک دارم.
برنامه ای هست به اسم Thinstall. این برنامه برای ساختن برنامه های پرتابله. با این برنامه می تونید برای ساختن یک پرتابل از برنامه خودتون استفاده کنید. کاری که این برنامه می کنه اینکه فریم ورک رو به صورت پرتابل روی دستگاه نصب می کنه و به راحتی برنامه ای رو که نوشتید اجرا می کنه.
در ضمن توی خود سایتش به صورت اختصاصی روش پرتابل کردن دات نت فریم ورک رو یاد داده. این برنامه رو خودم تستش کردم کار می کنه.
امید وارم ازش لذت ببرید.
:قهقهه: