PDA

View Full Version : حرفه ای: آیا راه حلی برای اجرای برنامه های دات نتی بدون نصب .net framework وجود دارد؟



BORHAN TEC
شنبه 11 آذر 1391, 16:06 عصر
سلام
می خواستم بدانم که آیا راه حلی برای اجرای برنامه های دات نتی بدون نصب .net framework وجود دارد؟

توضیحات:
من برنامه ای دارم که در برخی از قسمت های آن می خواهم از زبان های دات نتی استفاده کنم. می خواهم که dll هایی را در محیط دات نت ایجاد کنم و توابعی را در آن قرار دهم و از زبان دیگری مثل دلفی آنرا صدا بزنم. در این قسمت مشکلی ندارم. مشکل من دقیقاً این است که به صورت پیش فرض برای این کار باید بر روی سیستم مقصد .Net framework نصب باشد و این مهمترین مشکل من است. آیا لینکر و یا ابزار خاصی در مورد دات نت وجود دارد که بتواند این مشکل را حل کند؟

موفق و سربلند باشید...

Farshid007
شنبه 11 آذر 1391, 16:21 عصر
مگه میشه با تو دلفی از .net استفاده کنی؟

BORHAN TEC
شنبه 11 آذر 1391, 16:30 عصر
مگه میشه با تو دلفی از .net استفاده کنی؟
آره، خیلی راحت!!!
برای این کار چند روش مختلف وجود داره که یکیش این مقاله ای هست که قبلاً نوشتم:
http://barnamenevis.org/showthread.php?302371-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DB%8C%DA%A9-DLL-%D8%B3%D8%A7%D8%AE%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%A8%D8%A7-Delphi-Prism-%D8%AF%D8%B1-Native-Delphi

یکی هم استفاده از ابزار Atozed Cross-Talk است:
http://www.atozed.com/CrossTalk/index.EN.aspx

یک راه حل دیگه هم استفاده از ابزار RemObjects Hydra هست:
http://www.remobjects.com/hydra/

یک راه حل دیگر هم که از برخی لحاظ از Hydra هم بهتر است Managed VCL است:
http://www.managed-vcl.com/

در کل باید بگویم که برای ساخت برنامه های بزرگ معمولاً از چند زبان برنامه نویسی بنا به نیاز استفاده می شود که با روش ها مختلفی می توان Delphi و C++‎‎‎/Qt و Visual C++‎‎‎ و X/DotNet و ... را با هم ترکیب کرد(منظورم از X/DotNet یکی از زبانهای مبتنی بر دات نت است مثل C#‎‎ و VB.Net و Oxygene و ...). دلیل این کار هم این است که هر کدام از زبانهای برنامه نویسی در زمینه خاص خود معمولاً بهتر از بقیه عمل می کنند مثلاً دلفی در دیتابیس خیلی قوی است، جاوا در برنامه های تحت سرور بهتر است چرا که در صورت نیاز توانایی اجرا در Main Frame ها را نیز دارد، C++‎‎‎/Qt هم قدرتمند است و هم کتابخانه ها و هم کدهای آماده زیادی دارد و الی آخر ... .:چشمک:

امیدوارم که مفید بوده باشه ولی خواهشمندم که بحث تاپیک رو منحرف نکنید چون موضوع تاپیک در مورد مسئله دیگری است.
با تشکر...

hossein_sh2008
شنبه 11 آذر 1391, 16:33 عصر
با سلام
چون شما از امكانات دات نت استفاده مي كنيد بايد هم در زمان استفاده از اون دات نت نصب باشه

BORHAN TEC
شنبه 11 آذر 1391, 16:48 عصر
چون شما از امكانات دات نت استفاده مي كنيد بايد هم در زمان استفاده از اون دات نت نصب باشه
مشکل من هم دقیقاً نصب دات نت است. من به دنبال روشی می گردم که برنامه ام با کپی کردن کار کند، حتی اگر برنامه برای اجرا به Dll هایی هم نیاز داشته باشد مسئله این است که من نمی خواهم که کاربر را مجبور به نصب دات نت کنم. خوشبختانه همین الان یک ابزاری را برای این کار پیدا کردم و آنرا در یک Virtual Machine تست کردم و دیدم که واقعاً درست کار می کند ولی در طول همین چند دقیقه تستی که انجام دادم متوجه شدم که این ابزار زیاد Stable نیست. به عنوان مثال اگر فایلهای مورد نیاز آنرا با UPX فشرده کنید برنامه نمی تواند اجرا شود. این هم لینک آدرس مربوطه:
http://www.remotesoft.com/linker/

اکنون من متوجه شدم که برای این کار راه حلهایی می تواند وجود داشته باشد. توجه داشته باشید که در دمویی که این ابزار در سایتش قرار داره یک برنامه دات نتی با فرمت Exe وجود داره ولی مسئله اصلی اینه که من قصد استفاده از یک Dll مبتنی بر دات نت را دارم و نه یک Exe.

Mahmoud Zaad
شنبه 11 آذر 1391, 18:09 عصر
سلام
یک راه اینه که شما در قسمت References پروژه بر روی رفرنس های پروژه کلیک کنید و در پنجره Properties گزینه Copy local رو True کنید با یک بار build کردن پروژه، رفرنس ها به پوشه دیباگ اضافه می شوند که باید همیشه این dll ها در کنار پروژه باشند. هر چند ممکنه حجم این dll ها به اندازه همون دات نت باشه. بنابراین حدالامکان از دات نتی استفاده کنید که حجمش پایین باشه و خواسته های شما رو هم براورده کنه.

پ.ن. این مطلب جزء شنیده های من هست و الان امکان تستش رو ندارم، چون روی سیستم دات نت نصب هست.

BORHAN TEC
شنبه 11 آذر 1391, 19:31 عصر
دستتون درد نکنه ولی این موضوعی که شما مطرح کردید نمی تواند این مشکل را برطرف کند.