PDA

View Full Version : طراحی برنامه برای سیستم های 32 و 64 بیتی با هم فرق می کنه؟



Vidico
دوشنبه 13 مهر 1394, 09:48 صبح
سلام
آیا تو ویژال استدیو C# نحوه طراحی برای سیستم های 32 و 64 بیتی با هم فرق می کنه؟

چجوری باید جدا گونه طراحی بشه ؟ میشه راهنمائی کنید؟ :قلب:

کامبیز اسدزاده
دوشنبه 13 مهر 1394, 10:24 صبح
سلام
آیا تو ویژال استدیو C#‎‎‎ نحوه طراحی برای سیستم های 32 و 64 بیتی با هم فرق می کنه؟

چجوری باید جدا گونه طراحی بشه ؟ میشه راهنمائی کنید؟ :قلب:

درسته که در C#‎‎ گزینه 32 و 64 بیتی وجود داره ولی فکر نمیکنم خیلی در پروژه های نه چندان بزرگ به درد بخوره ، چون در اصل برنامه های 64 بیتی زمانی ریلیز میشوند که باید بیشتر از حافظه های 4 گیگاباتی به بالا استفاده کنند که این کار باعث میشه در پردازش های سنگینتر برنامه با استفاده تمام ظرفیت حافظه سریعتر پاسخگو باشه.

در رابطه با نحوه طراحیش در C#‎‎ کار خاصی نیاز نیست چرا که برنامه های نوشته شده تحت این زبان Managed شده هستند و مدیریت حافظه به صورت خودکار صورت میگیره ولی برای کامپایلش و خروجی گرفتن کافیه نوع Deploy رو روی x64 یا x86 قرار بدین در این صورت اگر برنامه شما x64 کامپایل بشه روی ویندوز 32 بیتی قابل اجرا نخواهد بود حتی اگه یک برنامه جهت نمایش Hello World باشه و در اصل اگر سیستمی که برنامه شما روش نصب خواهد شد دارای حافظه بیشتر از 4 گیگابایت مثلا 8 گیگابایت باشه مجاز خواهد بود تا حد اکثر حافظه رو اشغال کنه که بازهم بعید میدونم چون هیچ برنامه سنگینی تو C#‎‎ وجود نداره که نیاز باشه بیشتر از چند صد مگابایت رو اشغال کنه.

روش درست این هستش تا زمانی که از برنامه های پیچیده ای استفاده نمیکنید در حالت x86 یا AnyCPU کامپایلش کنید.

SabaSabouhi
دوشنبه 13 مهر 1394, 10:48 صبح
درسته که در C#‎‎‎ گزینه 32 و 64 بیتی وجود داره ولی فکر نمیکنم خیلی در پروژه های نه چندان بزرگ به درد بخوره ، چون در اصل برنامه های 64 بیتی زمانی ریلیز میشوند که باید بیشتر از حافظه های 4 گیگاباتی به بالا استفاده کنند که این کار باعث میشه در پردازش های سنگینتر برنامه با استفاده تمام ظرفیت حافظه سریعتر پاسخگو باشه.

در رابطه با نحوه طراحیش در C#‎‎‎ کار خاصی نیاز نیست چرا که برنامه های نوشته شده تحت این زبان Managed شده هستند و مدیریت حافظه به صورت خودکار صورت میگیره ولی برای کامپایلش و خروجی گرفتن کافیه نوع Deploy رو روی x64 یا x86 قرار بدین در این صورت اگر برنامه شما x64 کامپایل بشه روی ویندوز 32 بیتی قابل اجرا نخواهد بود حتی اگه یک برنامه جهت نمایش Hello World باشه و در اصل اگر سیستمی که برنامه شما روش نصب خواهد شد دارای حافظه بیشتر از 4 گیگابایت مثلا 8 گیگابایت باشه مجاز خواهد بود تا حد اکثر حافظه رو اشغال کنه که بازهم بعید میدونم چون هیچ برنامه سنگینی تو C#‎‎‎ وجود نداره که نیاز باشه بیشتر از چند صد مگابایت رو اشغال کنه.

روش درست این هستش تا زمانی که از برنامه های پیچیده ای استفاده نمیکنید در حالت x86 یا AnyCPU کامپایلش کنید.

سلام
به‌ترین کار اینه که کامپایل در حالت AnyCPU انجام بشه، به صورت پیش‌فرض هم همینه.

صبا صبوحی

abdullah20
دوشنبه 13 مهر 1394, 11:33 صبح
اگر در پروژه از یک Dll مثلا 32 بیتی استفاده شده باشه و در حالت anycpu کامپایل بشه
برنامه هنگام اجرا روی سیستم 64 بیتی به عنوان یک پروسه 64 بیتی اجرا میشه ونمیتونه اون dll را لود کنه
که در اینجا باید در حالت x86 کامپایل بشه

کامبیز اسدزاده
دوشنبه 13 مهر 1394, 11:42 صبح
اگر در پروژه از یک Dll مثلا 32 بیتی استفاده شده باشه و در حالت anycpu کامپایل بشه
برنامه هنگام اجرا روی سیستم 64 بیتی به عنوان یک پروسه 64 بیتی اجرا میشه ونمیتونه اون dll را لود کنه
که در اینجا باید در حالت x86 کامپایل بشه

دقیقا همینطور هستش ، اگر پروژه ای دارای کتابخانه یا فایل هایی به صورت DLL باشه که به صورت جداگانه کامپایل شده اند در این مورد باید توجه داشته باشیم که پروژه اصلی و فایل های dll همگی باید بر اساس یک معماری کامپایل شوند در غیر اینصورت هنگام صدا زدن dll مورد نظر برنامه با مشکل مواجه خواهد شد.

abdullah20
دوشنبه 13 مهر 1394, 12:06 عصر
ممنون از جناب اسدزاده و جناب صبوحی
ولی اگر برنامه شامل اینگونه موارد نمیشه باید در حالت anycpu کامپایل بشه مثلا اینجا (http://barnamenevis.org/showthread.php?507453-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-sqlite-%D8%AF%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-%D9%87%D8%A7%DB%8C-32-%D9%88-64-%D9%88-%D9%86%D8%B3%D8%AE%D9%87-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D9%BE%D8%B1%D9%88%DA%98%D9%87&p=2265244&viewfull=1#post2265244) را ببینید