PDA

View Full Version : ساخت برنامه با قابلیت استفاده از پلاگین



CYCLOPS
یک شنبه 18 بهمن 1388, 13:09 عصر
سلام دوستان
من تو یه برنامه میخوام یه سری از قابلیت های برنامم رو به صورت پلاگین ارائه کنم
یعنی یه سری قابلیت های اصلی داشته باشم که تو تمام نسخه ها مشترک هست و یه سری از قابلیت های دیگه فقط برای نسخه های خاص باشه فعال بشه .

میخوام پلاگین هام به صورت EXE یا DLL باشه

البته اینو بگم که نمیخوام این قابلیت باشه که دیگران برای برنامم پلاگین بنویسن فقط میخوام خودم برای برنامم پلاگین بنویسم و در اختیار مشتریم بذارم . . .
لطفا روند کلی و جزئی کار رو بی زحمت برام توضیح بدید . . .
لینک | مثال | توضیح | نمونه کد و در کل هر چیزی که در این رابطه میدونید . . .

البته جستجو هم کردم و تاپیکی که به نتیجه رسیده باشه پیدا نکردم

پیشاپیش از همکاری دوستان متشکرم :چشمک:

FastCode
یک شنبه 18 بهمن 1388, 14:38 عصر
یه راهش اینه که
یه چیزی مثلا" به اسم common.dll داشته باشید.
یه folder به اسم مثلا" Plugins.
توی پروژتون تمام dll هایی رو که توی فولدر plugins هستند رو reflect کنید. و با کمک common.dll که توسط برنامه ی اصلی و پلاگین reference شده با plugin های توی فولدر ارتباط برقرار کنید.
این روش 90% شبیه روش ویژوال استودیو.

CYCLOPS
سه شنبه 20 بهمن 1388, 16:28 عصر
یه راهش اینه که
یه چیزی مثلا" به common.dll داشته باشید.
یه folder به اسم مثلا" Plugins.
توی پروژتون تمام dll هایی رو که توی فولدر plugins هستند رو reflect کنید. و با کمک common.dll که توسط برنامه ی اصلی و پلاگین reference شده با plugin های توی فولدر ارتباط برقرار کنید.
این روش 90% شبیه روش ویژوال استودیو.

دوست عزیز ممنون از راهنماییت یه نمونه برنامه کوچیک داری که بتونم روند کار رو بهتر متوجه بشم ؟؟؟
و یه سوال مثلا پلاگین من اگر شامل UI باشه چی ؟؟؟
در واقع DLL نباشه و EXE باشه ؟؟
پلاگین در واقع اینطور هست که بعدا که فلان DLL یا EXE به پلاگین ها اضافه شد و مثلا تو پوشه ی plugin قرار گرفت باید همون موقع امکان استفادش از طریق فایل اصلی برنامه فراهم باشه برنامه من چطور بفهمه این DLL جدید چه توابعی داره و باید چطور از این DLL استفاده کنه ؟؟؟
چطور کدهایی که مثلا یک ماه پیش از ساخت پلاگین فعلی نوشته شدند بعد از یک ماه از Publish برنامه بتونن به پلاگین جدید دسترسی داشته باشند ؟؟؟

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

پیشاپیش ممنون از توجهتون :چشمک:

FastCode
سه شنبه 20 بهمن 1388, 16:37 عصر
UI هیچ اهمیتی نداره(فقط باید MDIParent رو در صورت وجود به تابع موجود در dll یا exe بفرستید تا plugin توی برنامتون اجرا بشه).
شما میتونی توی دستور جست و جوی فایلهای plugin هر پسوندی رو که دوست داری جست و جو کنی.

البته اینو بگم که نمیخوام این قابلیت باشه که دیگران برای برنامم پلاگین بنویسن فقط میخوام خودم برای برنامم پلاگین بنویسم و در اختیار مشتریم بذارم . . .
مثلا" میتونی dll هارو با الگوریتم huffman(برای کاهش حجم و تخریب ساختار) فشرده کنی و توی برنامه بعد از decode کردن از اونها استفاده کنی.
فقط فراموش نکن که هرگز ازentrypoint فایل های exe استفاده نکنی.

CYCLOPS
سه شنبه 20 بهمن 1388, 16:47 عصر
فقط فراموش نکن که هرگز ازentrypoint فایل های exe استفاده نکنی.
منظورتون رو از این جمله متوجه نمیشم :ناراحت:
خوب فایل EXE هست و entrypoint اش
استفاده نکنم یعنی چطوری؟؟
مگه میشه ؟؟
چرا استفاده نکنم ؟؟؟ مگه مشکلی پیش میاد ؟؟؟


بذار یه مثال بزنم تا سوالم رو بهتر متوجه بشی
مثلا فرض کن یکی از قابلیت های برنامم اینه که آدرس یه فایل MP3 رو بگیره و اونو تو یه کنترل Player پحش کنه
حالا من میخوام یه پلاگین بنویسم که یه پنجره OpenFileDialog رو باز کنه (وقتی مثلا متد GetFile فراخوانی شد) و آدرس رو از طرف بگیره و تو کنترل Player مربوطه پخش کنه
شما فرض کن من بعد از اضافه کردن این پلاگین به برنامه یه آیتم به منو های برنامم از طریق کد نویسی اضافه کردم حالا سوالات و نکات مبهمی که پیش میاد اینا است :
این منوی جدید چطور باید بفهمه که کارش اینه که بعد از کلیک روی اون مثلا متد GetFile پلاگین فراخوانی بشه (نه متد دیگه ای از اون) ؟؟؟
اصلا چطوری کدی که نمیدونیم چیه رو به به کنترلی که نمیدونیم چیه ولی در زمان اجرا به برنامه اضافه شده اضافه کنید تا مثلا رویداد کلیکش کار کنه ؟؟
مثلا شاید فراخوانی یه پلاگین احتیاج به ارسال پارامتر نداشته باشه و یه پلاگین برعکس . . .
شاید یه پلاگین اصلا UI نداشته باشه مثلا یه پلاگین باشه که بعد از نصبش تاریخی که تو برنامه تا الان به صورت میلادی نمایش داده میشده رو شمسی کنه برنامه از کجا باید بفهمه که پلاگینی که جدیدا اضافه شده UI داره یا نه ؟؟؟
و کلی سوال دیگه که به وقتش . . . .
:متفکر:

FastCode
سه شنبه 20 بهمن 1388, 16:55 عصر
برای این کار باید:
1 برنامه در حالت fulloption نوشته شده باشه(من توی برنامه هام این کار رو میکنم===> کار سختی نیست, روش کار هم استفاده از ∞ کلاس هست.)
2 بخشی از پلاگین اول برنامه اجرا بشه و توی تنظیمات برنامه پراسیجر رجیستر شده برای اون عمل(پخش mp3) رو با یه پراسیجر که توی plugin تعریف شده عوض کنه.

در ضمن هر plugin فقط باید برای یک ورژن از برنامه نوشته بشه و توی ورژنهای بعدی اون plugin باید توی خود ساختار برنامه باشه(نه به عنوان یک فایل جدا.).

FastCode
سه شنبه 20 بهمن 1388, 16:59 عصر
برنامه از کجا باید بفهمه که پلاگین جدید اضافه شده UI داره یا نه ؟؟؟
باید چند تا interface با ساختار های متفاوت توی common.dll داشته باشید و برای هر پلاگین که در یک فایل هست یک کلاس بنویسید که interface مربوط به خودش رو implement میکنه.
برای پیدا کردن interface های implement شده هم میتونید از Reflection استفاده کنید.

FastCode
سه شنبه 20 بهمن 1388, 17:01 عصر
منظورتون رو از این جمله متوجه نمیشم
خوب فایل EXE هست و entrypoint اش
استفاده نکنم یعنی چطوری؟؟
مگه میشه ؟؟
چرا استفاده نکنم ؟؟؟ مگه مشکلی پیش میاد ؟؟؟

علت: اگر برنامه Error بده باید 6 ماه دنبالش بگردی.
برای اجرای plugin باید از Reflection استفاده کنید.

CYCLOPS
سه شنبه 20 بهمن 1388, 17:03 عصر
برای این کار باید:
1 برنامه در حالت fulloption نوشته شده باشه(من توی برنامه هام این کار رو میکنم===> کار سختی نیست, روش کار هم استفاده از ∞ کلاس هست.)

وقتی یه کد جدیدی تو یه فایل جدا از برنامه قرار داره چطوری این کار عملیه مثلا ما برنامه رو نوشتیم و کامپایل کردیم تو کلاس های برنامه کامپایل شده کدی برای استفاده از پلاگین جدید نبوده و نیست پس چطور باید ازش استفاده کنیم ؟؟



2 بخشی از پلاگین اول برنامه اجرا بشه و توی تنظیمات برنامه پراسیجر رجیستر شده برای اون عمل(پخش mp3) رو با یه پراسیجر که توی plugin تعریف شده عوض کنه.

از کجا بفهمیم کار پلاگین جدید پخش MP3 هست و متد اصلی این کار GetFile هست ؟؟
شما برنامه رو مثلا یه ماه پیش نوشتی و حالا داری یه قابلیت به برنامت اضافه میکنی .



در ضمن هر plugin فقط باید برای یک ورژن از برنامه نوشته بشه و توی ورژنهای بعدی اون plugin باید توی خود ساختار برنامه باشه(نه به عنوان یک فایل جدا.).
میشه بیشتر توضیح بدی ؟؟

بازم ممنون از توجهت :تشویق:

FastCode
سه شنبه 20 بهمن 1388, 17:08 عصر
از کجا بفهمیم کار پلاگین جدید پخش MP3 هست و متد اصلی این کار GetFile هست ؟؟
خود پلاگین این رو میدونه, و دونستن برنامه هیچ اهمیتی نداره.

میشه بیشتر توضیح بدی ؟؟

باید یه Reference از برنامه توی plugin داشته باشید تا بتونید همه چیز رو عوض کنید.

CYCLOPS
سه شنبه 20 بهمن 1388, 17:13 عصر
دوست عزیز تا همین جا هم خیلی لطف کردی واقعا ممنون
میشه خواهش کنم یه برنامه خیلی ساده با استفاده از راهی که میگی در اختیارم بذاری؟؟؟
مثلا یه برنامه که در حالت طبیعی دو عدد میگیره و با زدن دکمه مثلا ok جمع دو عدد رو بر میگردونه حالا میخوایم یه پلاگین به برنامه اضافه کنیم (مثلا یه DLL) که بتونه حاصل تفریق دو عدد وارد شده رو هم حساب کنه . . .

FastCode
سه شنبه 20 بهمن 1388, 17:21 عصر
1ساعت وقت میخواد.
یه کار 2 ساعته هم برام پیش اومده که باید برم.
با اجازه مرخص میشم تا سه ساعت دیگه.:خجالت:

CYCLOPS
سه شنبه 20 بهمن 1388, 17:25 عصر
1ساعت وقت میخواد.
یه کار 2 ساعته هم برام پیش اومده که باید برم.
با اجازه مرخص میشم تا سه ساعت دیگه.:خجالت:

اجازه ما هم دست شماست داداشم :بامزه:
امیدوارم تو این مدت تاپیک از این حالت دو نفره خارج بشه و دوستان دیگه هم که تجربه ، نظر یا پیشنهادی دارند تو بحث شرکت کنند .

فعلا یه جورایی پاسخ به پست زیر میتونه پاسخی به کل تاپیک باشه :

دوست عزیز تا همین جا هم خیلی لطف کردی واقعا ممنون
میشه خواهش کنم یه برنامه خیلی ساده با استفاده از راهی که میگی در اختیارم بذاری؟؟؟
مثلا یه برنامه که در حالت طبیعی دو عدد میگیره و با زدن دکمه مثلا ok جمع دو عدد رو بر میگردونه حالا میخوایم یه پلاگین به برنامه اضافه کنیم (مثلا یه DLL) که بتونه حاصل تفریق دو عدد وارد شده رو هم حساب کنه . . .

debugger
سه شنبه 20 بهمن 1388, 18:04 عصر
اینم یک سورس کامل و حرفه ای در این زمینه + PDF آموزشی

FastCode
سه شنبه 20 بهمن 1388, 18:58 عصر
اینم از برنامه(یکم زود آماده شد)و البته خیلی جای کار داره.
روش کار:(به ترتیب انجام بدید.)
اول برنامه MainProgram رو build کنید.
بعد plugin1 رو build کنید.
بعد plugin1.dll رو از توی پوشه ی debug مربوط به پروژه ی خودش کنار MainProgram.exe کپی کنید.
بعد با F5 برنامه ی MainProgram رو اجرا کنید.
حالشو ببرید.

علیرضا حسن زاده
سه شنبه 20 بهمن 1388, 20:23 عصر
دوست عزیز اگه بخوای پلاگین ساخت رو بصورت کلی یاد بگیری بد نیست یه نگاهی هم به برنامه WinAmp بندازی چون از پلاگین های زیادی پشتیبانی میکنه و همه هم می تونن براش پلاگین بنویسن البته با تکنولوژی دات نت نیستن ولی اصول کار دستت میاد و روش ایجاد پلاگین برای این برنامه رو مطالعه کن
اگه درست یادم باشه هر پلاگینی که برای این برنامه نوشته میشه باید یه تابع تابع داشته باشه که برنامه برای اجرا اون رو اجرا میکنه بعد یه ساختاری هم داره که اطلاعات رو برنامه از طریق اون به پلاگین میفرسته و با همچین ساختاری هم پلاگین با برنامه ارتباط داره البته شاید یکم اشتباه گفته باشم چون چند سال پیش در این مورد مطالعه می کردم و روش برنامه Winamp به نظرم روشی جالبی اومد بازم می گم اگه روش ساخت پلاگین واسه این نرم افزار رو مطالعه کنی خیلی چیزا دستت میاد
از نتیجه مطالعات ما هم بی نصیب نباشیم:لبخند:

FastCode
سه شنبه 20 بهمن 1388, 20:30 عصر
دوست عزیز اگه بخوای پلاگین ساخت رو بصورت کلی یاد بگیری بد نیست یه نگاهی هم به برنامه WinAmp بندازی چون از پلاگین های زیادی پشتیبانی میکنه و همه هم می تونن براش پلاگین بنویسن البته با تکنولوژی دات نت نیستن ولی اصول کار دستت میاد و روش ایجاد پلاگین برای این برنامه رو مطالعه کن
اگه درست یادم باشه هر پلاگینی که برای این برنامه نوشته میشه باید یه تابع تابع داشته باشه که برنامه برای اجرا اون رو اجرا میکنه بعد یه ساختاری هم داره که اطلاعات رو برنامه از طریق اون به پلاگین میفرسته و با همچین ساختاری هم پلاگین با برنامه ارتباط داره البته شاید یکم اشتباه گفته باشم چون چند سال پیش در این مورد مطالعه می کردم و روش برنامه Winamp به نظرم روشی جالبی اومد بازم می گم اگه روش ساخت پلاگین واسه این نرم افزار رو مطالعه کنی خیلی چیزا دستت میاد
از نتیجه مطالعات ما هم بی نصیب نباشیم:لبخند:

دوست عزیز هدف اصلی ما تغییر رفتار برنامست. نه زیاد کردن تعداد اونها.
در ضمن اونها با تکنولوژی دات نت هستند.

علیرضا حسن زاده
چهارشنبه 21 بهمن 1388, 07:59 صبح
دوست عزیز هدف اصلی ما تغییر رفتار برنامست. نه زیاد کردن تعداد اونها.
در ضمن اونها با تکنولوژی دات نت هستند.
دوست عزیز کی تا حالا Winamp دات نتی شده؟ البته من ورژن های جدیدشو ندیدم شاید دانت باشه و قبلی ها نه:ناراحت:
نکته دیگه هم اینکه اصولا پلاگین ها برای ایجاد امکانات و رفتارهایی هستند که در برنامه اصلی که ارائه شده وجود نداره و با پلاگین این قابلیت رو به اون اضافه می کنن حالا اگه هدف شما چیز دیگه ای باشه من نمیدونم مثلا قابلیت هایی که پلاگین های فتوشاپ به اون برنامه اضافه می کنن در اصل برنامه نیست و رفتار برنامه رو هم تغییر نمیده اگه بخوایم دفتار برنامه رو تغییر بدیم موضوع بحث عوض میشه و میره رو مهندسی معکوس و کرک... که فکر نمی کنم ربطی به بحث پلاگین داشته باشه البته قصد من توهین نبود فقط خواستم موضوع روشن تر بشه معمولا هم سیاستی که واسه پلاگین به کار میبرن اینه که از قدرت برنامه نویس های دیگه به صورت مجانی به نفع برنامه استفاده بشه چون افزودن قابلیت جدید به برنامه یه نوع تبلیغ واسه اون حساب میشه و صد البته واسه برنامه های مختلف روش ها هم متفاوت هستن مثلا بیشتر برنامه های مایکروسافت مثل ویژوال استدیو و آفیس قابلیت add in دارن و امکان توسعه برنامه رو واسه شرکت های دیگه هم میدن بعضی هم مثل adobe پلاگین قبول می کنن:بوس:
تا اونجایی هم که من می دونم پلاگین یعنی کدی که وقتی کنار برنامه قرار بگیره برنامه اون رو به صورت خودکار تشخیص بده یا توسط کاربر به برنامه معرفی بشه و توسط واسط هایی که توسط منتشر کننده برنامه تعریف شده با اون ارتباط برقرار کنه و از قابلیت های اون استفاده کنه
برنامه ای رو هم که گذاشتین به خودی خود برنامه نیست البته در حد مثال خوبه اما اگه پلاگین نباشه هم برنامه باید بتونه یه کارایی انجام بده این کاری که شما کردی مثل اینه که از یه اکتیو ایکس تو برنامه استفاده کنی و اگه نباشه کار برنامه مختل میشه.:خجالت:

FastCode
چهارشنبه 21 بهمن 1388, 12:51 عصر
دوست عزیز کی تا حالا Winamp دات نتی شده؟ البته من ورژن های جدیدشو ندیدم شاید دانت باشه و قبلی ها نه:ناراحت:
نکته دیگه هم اینکه اصولا پلاگین ها برای ایجاد امکانات و رفتارهایی هستند که در برنامه اصلی که ارائه شده وجود نداره و با پلاگین این قابلیت رو به اون اضافه می کنن حالا اگه هدف شما چیز دیگه ای باشه من نمیدونم مثلا قابلیت هایی که پلاگین های فتوشاپ به اون برنامه اضافه می کنن در اصل برنامه نیست و رفتار برنامه رو هم تغییر نمیده اگه بخوایم دفتار برنامه رو تغییر بدیم موضوع بحث عوض میشه و میره رو مهندسی معکوس و کرک... که فکر نمی کنم ربطی به بحث پلاگین داشته باشه البته قصد من توهین نبود فقط خواستم موضوع روشن تر بشه معمولا هم سیاستی که واسه پلاگین به کار میبرن اینه که از قدرت برنامه نویس های دیگه به صورت مجانی به نفع برنامه استفاده بشه چون افزودن قابلیت جدید به برنامه یه نوع تبلیغ واسه اون حساب میشه و صد البته واسه برنامه های مختلف روش ها هم متفاوت هستن مثلا بیشتر برنامه های مایکروسافت مثل ویژوال استدیو و آفیس قابلیت add in دارن و امکان توسعه برنامه رو واسه شرکت های دیگه هم میدن بعضی هم مثل adobe پلاگین قبول می کنن:بوس:
تا اونجایی هم که من می دونم پلاگین یعنی کدی که وقتی کنار برنامه قرار بگیره برنامه اون رو به صورت خودکار تشخیص بده یا توسط کاربر به برنامه معرفی بشه و توسط واسط هایی که توسط منتشر کننده برنامه تعریف شده با اون ارتباط برقرار کنه و از قابلیت های اون استفاده کنه
برنامه ای رو هم که گذاشتین به خودی خود برنامه نیست البته در حد مثال خوبه اما اگه پلاگین نباشه هم برنامه باید بتونه یه کارایی انجام بده این کاری که شما کردی مثل اینه که از یه اکتیو ایکس تو برنامه استفاده کنی و اگه نباشه کار برنامه مختل میشه.:خجالت:
من توی سایت winamp یه مقدار که خوندم اینطور فهمیدم که باید net. باشه, ولی ظاهرا" اطلاعات شما خیلی کامل هستند.پس جایی برای اشتباهات بنده نمی مونه.:خجالت::خجالت::خجالت:
معذرت می خوام که با اون اشتباه باعث خدشه دار شدن ذهن دوستان شدم.:خجالت:

یادم رفت بگم که برنامه ی من به خودی خود برنامه هست.و هیچ وابستگی ای به پلاگین نداره. :عصبانی: :عصبانی: :عصبانی: :عصبانی++: :عصبانی: :عصبانی++: :عصبانی:
شما میتونید اون رو بدون پلاگین هم اجرا کنید.اون موقع رو بار جمع اعداد رو میده.
ولی وقتی برنامه با پلاگین اجرا میشه, برنامه در مرتبه ی اول جمع و در مرتبه ی دوم اختلاف اونها رو میده.

علیرضا حسن زاده
سه شنبه 27 بهمن 1388, 17:39 عصر
یادم رفت بگم که برنامه ی من به خودی خود برنامه هست.و هیچ وابستگی ای به پلاگین نداره. :عصبانی: :عصبانی: :عصبانی: :عصبانی++: :عصبانی: :عصبانی++: :عصبانی:
شما میتونید اون رو بدون پلاگین هم اجرا کنید.اون موقع رو بار جمع اعداد رو میده.
ولی وقتی برنامه با پلاگین اجرا میشه, برنامه در مرتبه ی اول جمع و در مرتبه ی دوم اختلاف اونها رو میده.
شرمنده دوست عزیز من دوباره چک کردم درسته برنامه شما بدون پلاگین هم کار می کنه:خجالت::خجالت::خجالت:
اگه نگید ایراد بنی اسرائیلی میگیرم یه نکته ای تو برنامتون دیدم: اونم اینکه بهتره به جای ارسال پارامترها بصورت آبجکت از تایپ های general استفاده کنید در اغلب موارد سربار کمتری داره البته نه تو برنامه شما تو برنامه های بزرگتر و اینم بگم که برای ارئه مثال برنامتون یه چیزی هم بیشتر از عالی بود
دیگه از دست من ناراحت نشو:بوس:

FastCode
سه شنبه 27 بهمن 1388, 19:06 عصر
اگه نگید ایراد بنی اسرائیلی میگیرم یه نکته ای تو برنامتون دیدم: اونم اینکه بهتره به جای ارسال پارامترها بصورت آبجکت از تایپ های general استفاده کنید در اغلب موارد سربار کمتری داره البته نه تو برنامه شما تو برنامه های بزرگتر
من عمدا" از object استفاده کردم چون برای ارتقا برنامه ممکنه که یه روزی بخواهیم مثلا" int ها رو به long تبدیل کنیم.:لبخند:

Mr.Moghadam
سه شنبه 27 بهمن 1388, 23:00 عصر
سلام دوستان عزیز

یه نمونه برنامه که با پلاگین کار میکنه برای نمونه درست کردم. این پلاگینا همون userControl های خودمون هستن که به برنامه اضافه میشن. ببخشید اگه کد نویسی و مثالهاش خوب نبودن نیم ساعته درستش کردم.(:افسرده:) .
موفق باشید.

amirferdowsi
چهارشنبه 28 بهمن 1388, 00:20 صبح
سلام به تمامی دوستان

اگر پلاگین ما به صورت چند فرم ، کلاس و یوزرکنترل باشه ، چه جوری میتونیم به نرم افزار اصلی اضافه کنیم ؟

CYCLOPS
پنج شنبه 29 بهمن 1388, 06:08 صبح
دوستان گویا یه سری امکانات برای اینکار در فضای نام System.AddIn تدارک دیده شده ؛ به لینک های زیر یه نگاه بندازید :

http://vahidnasiri.blogspot.com/2009/12/maf.html
و
http://vahidnasiri.blogspot.com/2009/12/maf_23.html
و
http://www.developerfusion.com/article/9396/creating-extensible-applications-with-maf/
و
http://msdn.microsoft.com/en-us/magazine/cc163476.aspx
و
http://msdn.microsoft.com/en-us/magazine/cc700355.aspx
و
http://msdn.microsoft.com/en-us/architecture/bb735304.aspx
و
http://msdn.microsoft.com/en-gb/library/bb384240.aspx
و
http://cskardon.wordpress.com/2008/04/08/managed-application-framework-part-1-the-beginnings/
و
http://cskardon.wordpress.com/2008/06/09/managed-application-framework-part-2-basic-versioning/
و
http://blogs.southworks.net/jcisneros/2008/06/16/managed-add-in-framework/

موفق باشید :چشمک:

john smithair
شنبه 24 تیر 1391, 10:29 صبح
سلام
دوستان کسی مثالی، جزوه آموزشی، نمونه سورسی چیزی از این کتابخانه sytem.addin یا به عبارت بهتر فریم ورک maf نداره؟ من خیلی از سایتهای داخلی و خارجی رو زیر و رو کردم. اطلاعات خوبی داشتن ولی هیچ کدوم از مثالاشون رو من نتونستم اجرا کنم.:ناراحت:
الان مثلا کسی ازین لینکای بالا مثالی رو که آقای وحید نصیری تو دات نت تیپس گذاشته تونسته اجرا کنه؟
من با اون پلاگینی که معرفی کرده مشکل دارم؟ نمیدونم چطور ازش استفاده باید کرد. خودشم توضیح نداده. خیلی ممنون میشم اگه کمک کنید.

lalian_sh
شنبه 27 اردیبهشت 1393, 13:50 عصر
(سلام دوستان عزیز

یه نمونه برنامه که با پلاگین کار میکنه برای نمونه درست کردم. این پلاگینا همون userControl های خودمون هستن که به برنامه اضافه میشن. ببخشید اگه کد نویسی و مثالهاش خوب نبودن نیم ساعته درستش کردم.(:افسرده:) .
موفق باشید.)

سلام
لطفا می شه توضیح بدید که به چه صورت می شود dll ایجاد کرد که با برنامه ای که هست اجرا شود

lalian_sh
شنبه 27 اردیبهشت 1393, 13:52 عصر
سلام دوستان عزیز

یه نمونه برنامه که با پلاگین کار میکنه برای نمونه درست کردم. این پلاگینا همون userControl های خودمون هستن که به برنامه اضافه میشن. ببخشید اگه کد نویسی و مثالهاش خوب نبودن نیم ساعته درستش کردم.(:افسرده:) .
موفق باشید.

سلام
لطفا می شه توضیح بدید که به چه صورت می شود dll ایجاد کرد که با برنامه ای که هست اجرا شود

aliagamon
شنبه 27 اردیبهشت 1393, 14:00 عصر
سلام
لطفا می شه توضیح بدید که به چه صورت می شود dll ایجاد کرد که با برنامه ای که هست اجرا شود
اموزش خیلی خیلی خیلی کوچیک ساخت Dll (http://barnamenevis.org/showthread.php?412192-%D8%AA%DA%A9%D9%87-%D8%AA%DA%A9%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%DA%86%D9%86%D8%AF-dll-%D8%AF%D8%B1-%D8%AF%D9%88-%D8%AF%D9%82%DB%8C%D9%82%D9%87)