PDA

View Full Version : سوال: ساخت پروژه ترکیبی Hybrid



alireza_tavakol
یک شنبه 08 شهریور 1388, 17:10 عصر
من می خواهم برنامهای بنویسم که اگه کاربر در هنگام اجرا ، آرگومانی را به عنوان پارامتر به تابع main وارد کرد ، برنامه من در حالت Console Application اجرا بشه ( یعنی صفحه سیاهی همچون CMD باز شود و دستورات همچون Console.Write و Console.Read قابل استفاده باشد)

و اگه برنامه من آرگومان ورودی در تابع main نداشت فرم Form1 من به کاربر نشان داده شود و در حالت Windows Forms Application اجرا شود!

سوالات مرتبط با هم که در ساخت این پروژه داشتم :

1- آیا نیاز است متد main در حالات مختلف تعریف شود (Overload)؟ اگر جواب مثبت است راهنمایی بفرمایید ؟

2- خروجی پروژه که در قسمت Properties>Application>Output type در چه حالتی تنظیم شود؟

3- آیا امکان این وجود داره که در پروژه های Windows Forms Application از دستورات Console استفاده کرد؟

Amir Oveisi
دوشنبه 09 شهریور 1388, 03:24 صبح
بیستر توضیح بدید که چکار میخواید انجام بدید تا بشه بهتر راهنمایی کرد

alireza_tavakol
سه شنبه 10 شهریور 1388, 01:55 صبح
برنامه های مهم مثل WinRAR و Visual Studio IDE و ... در دو حالت Console Application و Windows Forms Application قابل اجرا هستند .به عبارت دیگر یک فایل اجرایی دارن برای GUI که باعث جلب رضایت مشتری میشه و یک فایل اجرایی دارن که در حالت Prompt اجرا میشه ( در اکثر مواقع هسته مرکزی برنامه فایل اجرایی است که در حالت Command Line اجرا میشه و حتی فایل اجرایی که GUI داره به نحوی داره از این فایل اجرایی استفاده میکنه ) در یک همچین پروژه هایی برای استفاده از فایلی که به عنوان Command Line معرفی شده باید با پارامتر فارخوانی شود در غیر این صورت با خطا مواجه می شویم ولی فایل اجرایی که شامل GUI است بدون پارامتر اجرا می شود .

سوالی که مطرح میشه : چرا در این برنامه ها دو تا فایل اجرایی داریم ؟ اگه بشه همین فرآیند را در یک فایل اجرایی پیاده سازی کرد بهتر نیست؟

اینجا بود که من به فکر ساخت یک همچین برنامه ای افتادم.

البته شایان ذکره وقتی بشه توی پنجره Create Project نوع برنامه رو windows application تعریف کرد و بعد در بخش Properties>Application>Output type خروجی رو به Console Application تغییر داد ، پس حتما میشه پروژه های ساخت که در هر دو حالت قابل اجرا باشه!

با تشکر از حمایت دوستان:لبخندساده:

Amir Oveisi
سه شنبه 10 شهریور 1388, 02:19 صبح
سوالی که مطرح میشه : چرا در این برنامه ها دو تا فایل اجرایی داریم ؟ اگه بشه همین فرآیند را در یک فایل اجرایی پیاده سازی کرد بهتر نیست؟

نمیشه چون برای اون حالتی که شما میگین برنامه نیاز به 2 تا entry point داره که این امکان پذیر نیست. یه کاری که میشه کرد اینه که مثلا برنامه console رو در اون یکی embed کنید و هر موقع لازم شد load کرده و اجرا کنید.

اما واقعا چه نیازی هست که این همه کار انجام داد؟
بهترین راه حل همون هست که دو تا فایل اجرایی داشته باشیم، به دلیل زیر:
- چون در این حالت معماری برنامه نویسی لایه ای هم رعایت میشه به این شکل که لایه های زیری رو بصورت فایل های dll (یا هر جور دیگه) طراحی میکنند و برای لایه UI نیز دو تا فایل اجرایی میسازند که هر دو این ها از همون لایه ای یکسان زیری استفاده می کنند. حالا هر کاربری میتونه از نوع UI ای که نیاز داره استفاده کنه.

و خیلی دلیل های دیگه هم ممکنه وجود داشته باشه.

موفق باشید

alireza_tavakol
سه شنبه 10 شهریور 1388, 04:58 صبح
فقط یک سوال بی ربط که بی پاسخ مانده : آیا امکان این وجود داره که در پروژه های Windows Forms Application از دستورات Console استفاده کرد؟

وقتی از دستورات Console در برنامه های win app استفاده میکنم بهم خطا نمی ده ولی هیچ اتفاقی هم نمی افته ! چرا؟

Amir Oveisi
سه شنبه 10 شهریور 1388, 05:25 صبح
به این هم یک نگاهی بندازید:
How To Create a Console/Window Hybrid Application in C# (http://www.rootsilver.com/2007/08/how-to-create-a-consolewindow)