PDA

View Full Version : استفاده از کامپوننت 64 بیتی و 32 بیتی به طور همزمان



windowsyar
جمعه 16 شهریور 1397, 20:07 عصر
با سلام
من از دیتابیس sqlite برای برنامم استفاده می کنم الان مجبور همیشه دو نسخه از برنامه ارائه کنم یکی برای 32 بیت و یکی برای 64 بیت
آیا راه حلی هست که بشه دو تا کامپوننت ارائه شده برای 32 و 64 را در یک نرم افزار به کار برد ؟

تو این سایت stackoverflow فکر کنم جواب دادن ولی انگلیسی بود زیاد متوجه نشدم
https://stackoverflow.com/questions/7264383/.... (https://stackoverflow.com/questions/7264383/options-for-using-system-data-sqlite-in-a-32bit-and-64bit-c-sharp-world)

abdullah20
شنبه 17 شهریور 1397, 13:45 عصر
سلام
ببینید اگر فقط نسخه 32 بییتی sqlite را به پروژه اضافه کردید باشید باید platform را روی x86 تنظیم کنید.در این صورت پروژه شما هم روی سیستم های 32بیتی اجرا میشه هم 64 بیتی
ولی اگر میخواید برای هر سیستم از نسخه مخصوص خود sqlite استفاده کنید، وقتی از طریق nuget اقدام به نصب و اضافه کردن sqlite به پروژه میکنید هر دو کتابخانه(64 و 32 بیتی) به پروژه اضافه میشه و باید platform را روی Anycpu تنظیم کنید

موفق باشید

ramtinak
شنبه 17 شهریور 1397, 14:32 عصر
سلام، من قبلا انجام دادم، خیلی ساده است.
اول کتابخانه ای که میخواید از دو نسخه 32 و 64 بیتی اون استفاده کنید رو از پروژه حذف کنید.

1. یه پوشه توی جایی که فایل sln وجود داره به نام libs ایجاد کنید.
2. درون این پوشه، دو پوشه به اسم های x86 و x64 ایجاد کنید.
3. نسخه 64 بیتی کتابخانه رو بریزید داخل پوشه x64 و نسخه 32 بیتی رو بریزید توی پوشه x86.
http://s9.picofile.com/file/8336677042/s1.PNG
4. حالا یکی از این نسخه ها رو از طریق add reference به پروژه اضافه کنید.(فرق نداره کدوم باشه، چون ویرایشش قراره بکنیم.)
5. حالا روی پروژه ـتون راست کلیک کنید و گزینه Unload Project رو انتخاب کنید تا پروژه شما رو Unload کنید.
6. بعد از اینکار، روی پروژه راست کلیک کنید و گزینه Edit WindowsFormsApp5.csproj رو انتخاب کنید.(چون نام پروژه من WindowsFormsApp5 بود، این گزینه برای من به این صورت است، برای شما ادیت + نام پروژه اتون خواهد بود)
7. بعد از باز شدن xml های پروژه، بگردید دنبال کتابخانه ای که اضافه کردید. مثلا من نسخه 32 بیتی کتابخانه xyz.dll رو اضافه کرده بودم).
همانطور که مشاهده میکنید، کتابخانه باید به این صورت باشه، فقط اگه x64 رو اضافه کرده باشید، جای x86 که در تصویر زیر هست، x64 خواهید دید.
http://s8.picofile.com/file/8336677900/s2.PNG
8. جای x86 یا x64 در تصویر بالا، کلمه $(PlatformTarget) رو بنویسید(علامت دلار باید اول قرار بگیره!)
http://s8.picofile.com/file/8336678268/s3.PNG

حالا این فایل رو ذخیره کنید و بعد ببندید. سپس روی پروژه خود راست کلیک کنید و گزینه Reload Project رو انتخاب کنید تا پروژه شما باز شود.
از این به بعد هر بار پروژه شما 32 بیتی باشد، کتابخانه 32 بیتی استفاده خواهد شد و هر بار 64 بیتی باشد، کتابخانه 64 مورد استفاده قرار میگیرد.

موفق باشید

windowsyar
یک شنبه 18 شهریور 1397, 11:46 صبح
سلام، من قبلا انجام دادم، خیلی ساده است.
اول کتابخانه ای که میخواید از دو نسخه 32 و 64 بیتی اون استفاده کنید رو از پروژه حذف کنید.

1. یه پوشه توی جایی که فایل sln وجود داره به نام libs ایجاد کنید.
2. درون این پوشه، دو پوشه به اسم های x86 و x64 ایجاد کنید.
3. نسخه 64 بیتی کتابخانه رو بریزید داخل پوشه x64 و نسخه 32 بیتی رو بریزید توی پوشه x86.
http://s9.picofile.com/file/8336677042/s1.PNG
4. حالا یکی از این نسخه ها رو از طریق add reference به پروژه اضافه کنید.(فرق نداره کدوم باشه، چون ویرایشش قراره بکنیم.)
5. حالا روی پروژه ـتون راست کلیک کنید و گزینه Unload Project رو انتخاب کنید تا پروژه شما رو Unload کنید.
6. بعد از اینکار، روی پروژه راست کلیک کنید و گزینه Edit WindowsFormsApp5.csproj رو انتخاب کنید.(چون نام پروژه من WindowsFormsApp5 بود، این گزینه برای من به این صورت است، برای شما ادیت + نام پروژه اتون خواهد بود)
7. بعد از باز شدن xml های پروژه، بگردید دنبال کتابخانه ای که اضافه کردید. مثلا من نسخه 32 بیتی کتابخانه xyz.dll رو اضافه کرده بودم).
همانطور که مشاهده میکنید، کتابخانه باید به این صورت باشه، فقط اگه x64 رو اضافه کرده باشید، جای x86 که در تصویر زیر هست، x64 خواهید دید.
http://s8.picofile.com/file/8336677900/s2.PNG
8. جای x86 یا x64 در تصویر بالا، کلمه $(PlatformTarget) رو بنویسید(علامت دلار باید اول قرار بگیره!)
http://s8.picofile.com/file/8336678268/s3.PNG

حالا این فایل رو ذخیره کنید و بعد ببندید. سپس روی پروژه خود راست کلیک کنید و گزینه Reload Project رو انتخاب کنید تا پروژه شما باز شود.
از این به بعد هر بار پروژه شما 32 بیتی باشد، کتابخانه 32 بیتی استفاده خواهد شد و هر بار 64 بیتی باشد، کتابخانه 64 مورد استفاده قرار میگیرد.

موفق باشید

خیلی متشکر
فقط یک سوال داشتم این راه حل برای وقتی هستی که سورس را به کسی می دهیم یعنی هنگامی که sln را باز می کند
یا هنگامی که فایل exe را به مشتری می دهیم ؟
یعنی اگر فایل exe را هم در ویندوز 64 باز کنیم باز هم تبدیل می شود ؟

samiasoft
یک شنبه 18 شهریور 1397, 17:38 عصر
خیلی متشکر
فقط یک سوال داشتم این راه حل برای وقتی هستی که سورس را به کسی می دهیم یعنی هنگامی که sln را باز می کند
یا هنگامی که فایل exe را به مشتری می دهیم ؟
یعنی اگر فایل exe را هم در ویندوز 64 باز کنیم باز هم تبدیل می شود ؟

دوست عزیز شما وقتی این عملیاتی که دوستمون اشاره کردن رو انجام بدید در خروجی برنامه هم ذخیره میشوند...تنها در sln ذخیره نمیشه

شما دیباگ یا ریلیز کنین و خروجی رو با فایل های مربوطه در هرویندوزی میتونید اجرا کنید

windowsyar
یک شنبه 18 شهریور 1397, 21:30 عصر
دوست عزیز شما وقتی این عملیاتی که دوستمون اشاره کردن رو انجام بدید در خروجی برنامه هم ذخیره میشوند...تنها در sln ذخیره نمیشه

شما دیباگ یا ریلیز کنین و خروجی رو با فایل های مربوطه در هرویندوزی میتونید اجرا کنید
بله متوجه شدم
یعنی فایل exe هم در ویندوز 32 بیتی و هم در ویندوز 64 بیتی اجرا می شود
یا این که باز هم باید واسه 32 جداگانه خروجی گرفت برای 64 هم جداگانه