PDA

View Full Version : سوال: روش گرفتن خروجی از برنامه با تمام dll ها و کامپوننت



eftary
دوشنبه 25 آذر 1392, 23:02 عصر
سلام دوستان
برنامم به کمک دوستان همین فروم تا جایی پیش بردم خواستم خروجی بگیرم پابلیش میکنم ارور پایین میاد.
اومدم exe پوشه دیباگ رو یک pc دیگه امتحان کردم گفت اون کامپوننت هایی که من تو برنامه نویسیم بکار بردم رو این سیستم نیست و ارور داد اجرا نشد.
Error 1 Cannot publish because a project failed to build. 1 1
چطور خروجی بگیرم که کامپوننت ها هم باشن.

sagggad
دوشنبه 25 آذر 1392, 23:07 عصر
داداش فکرکنم باید به Reference های برنامت اضافه کنی

samin_panahi
دوشنبه 25 آذر 1392, 23:20 عصر
یه سری نرم افزار هست که به کمک اون ها می تونی فایل های dll رو به فایل exe متصل کنی از اونا استفاده کن!

eftary
دوشنبه 25 آذر 1392, 23:21 عصر
منظورتون همونجا که add داره؟
میشه یکم بیشتر بگین،این اولین برنامم هست:-)

ordebehesht
دوشنبه 25 آذر 1392, 23:22 عصر
یه کاری کن رو اون dll ها که به refrense‌اضافه کردی راست کلیک کن برو پروپیتیس اونجا دستور کپی کردن dllهارو از fals به true عوض کن تا تمام کامپوننتهایی رو که به برنامت اضافه کردی تو پوشه اصلی برنامت کپی کنه بعد باید اون کامپوننتهای یا همون dll ها تو refrense رو که خودت اضافه کدی رو پاک کنی و همونا رو اینبار از پوشه اصلی برنامت که همون bin(فکرکنم)به برنامه اضافه کن و ادامه بده کارت رو

eftary
دوشنبه 25 آذر 1392, 23:28 عصر
یعنی dll ها رو از پوشه bin بخونه نه سیستم، درسته؟

abbas.oveissi
سه شنبه 26 آذر 1392, 04:13 صبح
یعنی dll ها رو از پوشه bin بخونه نه سیستم، درسته؟
بعد از این کارهایی هم که دوستمون گفت انجام دادید میتونید با نرم افزار ILMerge همه ی DLL هارو داخل فایل اجرایی Embed بکنید.برنامه از سایت خود مایکروسافت دانلود کنید و کار کردن هم باهاش خیلی ساده هست،اگر گوگل کنید حتما یاد میگرید :
Link e Download ILMerge = http://www.microsoft.com/en-us/download/details.aspx?id=17630

shahryari
سه شنبه 26 آذر 1392, 10:14 صبح
سلام
یه برنامه نوشتم همراه با فیلم آموزشی در تاپیک زیر از اون استفاده کنید
http://barnamenevis.org/showthread.php?421610-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%AF%D8%BA%D8%A7%D9%85-dll-%D9%87%D8%A7-%D9%88-%D9%81%D8%A7%DB%8C%D9%84-exe-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-exe-%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87-%28%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF%29&highlight=dll

eftary
سه شنبه 26 آذر 1392, 10:48 صبح
سلام
در انجام کارای زیر به مشکل خوردم
1-پوشه WinNt تو VISA هست همونه؟
2-تو Command اینو تایپ میکنم ولی هیچی


C:\Users\Ali\Documents\Visual Studio 2010\Projects\my\Pro\bin\Release

2- چطور Dll هایی که مال کامپوننت هست سورس کنم. تو Properties برنامم رفتم و APPlication File رفتم Dll هایی که استفاده کردم بود ولی چطور بچشبونم.
Include کردم و بعد publish زدم باز ارور قبلی اومد.


جناب مایکروسافت پس از اینکه فهمید شما چقدر DLL هاتون رو دوست دارید وروشون غیرت به خرج میدید، تصمیم گرفت که یک Tools رو با نام Ilmerge بسازه تا با کمک اون شما بتونید DLL هاتون رو در داخل دل EXE تون ببرید و اصطلاحا Embed شون بفرمایید.

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

در ابتدا باید Tools ی رو که خدمتتون گفتم یعنی Ilmerge رو که به صورت رایگان! در سایت مایکروسافت هست رو Download بفرمایی

http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

در آدرسی که دادم دکمه Download رو بزنید و Ilmerge رو Save بفرمایید.

خوب حالا نصبش بکنید و یک کپی از Ilmerge.exe نصب شده رو هم در داخل شاخه Winnt کپی کنید.

خوب دیگه حالا همه چی برای هنر نمایی شما حاضر!

پروژتون رو در حالت Release قرار بدید و بی زحمت Rebuild بفرمایید

پس از رفتن به قسمت Command Prompt به اون دایرکتوری که پروژتون قرار داره و در دایرکتوری bin\realeas تشریف ببرید و این عبارت رو تایپ بفرمایید.

Ilmerge /out:NewName.exe PrjFile.exe DllFile.dll

NewName: اسم جدید فایل اجرایی برنامتون هست.

PrjFile: اسم فایل اجرایی برنامتون که دایرکتوری Release قرار داره

DllFile.dll: اسم Dll محبوب شماست که قرار مال خود خودت باشه

حالا یه مثال که دیگه کامل قضیه حل بشه:

تصور کن که یه برنامه نوشتی به اسم Convertor و از یک Dll به نام Exchange برای تبدیل کردن واحد های مختلف پول که دست بر قضا یکی از کارای قشنگتم بوده استفاده کردی

عبارتی که در Command Prompt باید بنویسی این میشه

D:\MyProject\bin\Release>ilmerge /out:Mohammad.exe Convertor.exe Exchange.dll

همین، به همین راحتی توی دایرکتوری Release یک فایل جدید به اسم و پسوند Mohammad.exe داری که حالا بدون نیاز به وجود Exchange.dll در کنارش در همه جا و هر سیستمی قابل اجراست.

یک روش دیگه هم با استفاده از Ilmerge وجود داره که میشه در هنگام Rebuild کردن این Exe رو ساخت به محض اینکه اینم کشف کردم براتون مینویسم.

shahryari
سه شنبه 26 آذر 1392, 11:10 صبح
سلام
اول همه دی ال هاتون رو لوکال کنید و یکبار ریبیلد کنید تا همه دی ال ال ها به پوشه دیباگ کپی بشن
سپس از برنامه ای معرفی کردم استفاده کنید

eftary
سه شنبه 26 آذر 1392, 11:18 صبح
اول همه دی ال هاتون رو لوکال کنید و یکبار ریبیلد کنید تا همه دی ال ال ها به پوشه دیباگ کپی بشن


میشه بگین چطور؟


سلام
یه برنامه نوشتم همراه با فیلم آموزشی در تاپیک زیر از اون استفاده کنید
http://barnamenevis.org/showthread.php?421610-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%AF%D8%BA%D8%A7%D9%85-dll-%D9%87%D8%A7-%D9%88-%D9%81%D8%A7%DB%8C%D9%84-exe-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-exe-%DB%8C%DA%A9%D9%BE%D8%A7%D8%B1%DA%86%D9%87-%28%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF%29&highlight=dll

ممنون از برنامتون ولی من 10 تا Dll دارم :افسرده:

shahryari
سه شنبه 26 آذر 1392, 11:26 صبح
میشه بگین چطور؟



ممنون از برنامتون ولی من 10 تا Dll دارم :افسرده:
مشکلی نیست 1000 تاهم داشته باشی ادغام میکنه

eftary
سه شنبه 26 آذر 1392, 11:54 صبح
اول همه دی ال هاتون رو لوکال کنید و یکبار ریبیلد کنید تا همه دی ال ال ها به پوشه دیباگ کپی بشن


میشه بگین چطور؟

============
من رفتم تو فولدرا دستی دونه دونه dll هارو پیداکردم چسبونذم . روشی که گفتین توضیح میدید!
وقتیم چسبوندم استوپ ورکینگ شد.

eftary
سه شنبه 26 آذر 1392, 18:23 عصر
همنوز نتونستم.
دوستان کمک میکنید؟
چطور دی ال ها رو لوکال کنم؟

یافتم Local

eftary
سه شنبه 26 آذر 1392, 20:23 عصر
ILMerge.exe تو پوشه ریختم
dll هارو تو همون ریختم.
دستورم مثل این مینویسم


ilmerge Merg.exe A.exe B.exe C.dll /out:All.exe /target:winexe

ولی نمیشه.
یکی نیست راهنمایی کنه؟