PDA

View Full Version : تبدیل تمامی فرم های برنامه به dll آیا می شود ؟



Sal_64
سه شنبه 14 آذر 1391, 13:45 عصر
سلام- وقت بخیر - من کلی جستجو کردم اما هم مطالب پراکنده بود و هم توضیحات کمی سطح بالا-من می بایست برنامه ای طراحی کنم با 4-5 فرم بدون استفاده از بانک داده و به همراه تعدادی کامپوننت و dll سبک - سوالم اینه اگه بخوام برنامه ای داشته باشم که تمام فرم هاش بتونم به dll تبدیل کنم - اول اینکه در vs چه نوع پروژه ای باید انتخاب کنم ؟ و بعد از تبدیل فرم ها به dll چطوری باید برنامه اجرا کنم ؟ و اینکه آیا فرم main برنامه نباید به dll تبدیل شه؟ تشکر - دلیل اینکار (امکان آپدیت برنامه از طریق نت با اینترنت هندلی)

مهرداد صفا
سه شنبه 14 آذر 1391, 14:11 عصر
سلام
میتوانید یک class library به پروژه اضافه کنید و همه فرمها، حتی فرم اصلی را در آن قرار داده و از طریق منوی project/add reference//projects به refernce اضافه کنید و از آن استفاده کنید.

شاه وفا ابالفضل

mhdhp86
سه شنبه 14 آذر 1391, 14:14 عصر
من یک کلاس دارم که از یکی از دوستام گرفتم. اما به زبان vb هستش. یک کلاس تنها رو چه طور می تونم تبدیل به dll کنم؟ این توضیح شما مربوط به یک پروژه است.
ممنون

مهرداد صفا
سه شنبه 14 آذر 1391, 14:21 عصر
من یک کلاس دارم که از یکی از دوستام گرفتم. اما به زبان vb هستش. یک کلاس تنها رو چه طور می تونم تبدیل به dll کنم؟ این توضیح شما مربوط به یک پروژه است.
ممنون

سلام
فرق چندانی ندارد کلیت کار به همان شکل است.
از منوی file گزینه new project را باز کرده و از شاخه مربوط به visual basic گزینه class library را انتخاب کنید. کلاس مورد نظر را به پروژه ایجاد شده اضافه کنید. بقیه مراحل هم که گفته شد.

شاه وفا ابالفضل

hamid.karimy
سه شنبه 14 آذر 1391, 14:45 عصر
دلیل اینکار (امکان آپدیت برنامه از طریق نت با اینترنت هندلی)
روش های مختلفی برای خروجی گرفتن از برنامه وجود داره که جوابگوی کار شماست مانند publish کردن نرم افزار که می توان updating هم برای آن در نظر گرفت
http://msdn.microsoft.com/en-us/library/ms227344(v=vs.80).aspx
اما در مورد سوال شما بله میتوان تمامی فرمها حتی فرم اصلی را در dll قرار داد

Sal_64
سه شنبه 14 آذر 1391, 17:47 عصر
سلام -ممنونم M.safa عزیز- اما فک کنم سو تعبیر شده - من به تعداد فرم هام dll میخوام و نه فقط یک dll- ممکنه دوستان برنامه بسیار ساده ای با دو فرم بعنوان نمونه اینجا قرار بدن (که هر دو dll شده باشه و بشه باهاشون کار کرد و برنامه اجرا کرد)- تشکر

Sal_64
سه شنبه 14 آذر 1391, 18:01 عصر
سلام - hamid.karimy عزیز ممنون- در مورد پاپلیش مطالب سایت خوندم - اما ظاهرا با تغییر نسخه نرم افزار (حتی بسیار جزئی)تمام اون باید دانلود شه - درست میگم؟ اگر جواب منفی پس قاعدتا نمیشه با استفاده از برنامه های مخصوص تمام فایلها داخل یک فایل exe ریخت و برنامه باید ولنگ باز بمونه؟ تشکر

sinashahab
سه شنبه 14 آذر 1391, 18:52 عصر
ببخشيد الان دقيقا سوالتون چيه؟

بله ميشه فرم ها رو هر كردوم به عنوان يه dll باشه و بعد هنگام تغيير ميشه فقط فرم هايي كه تغيير كردن رو جايگزين كرد.

البته هر فرم رو بايد در يه پروژه ي جدا طراحي كنيد.

Sal_64
سه شنبه 14 آذر 1391, 19:03 عصر
سلام - sinashahab عزیز- الان یه نمونه برنامه با دو - سه فرم میخوام که همشون dll شده باشن - و بتونم ازش الگو برداری کنم- یه دنیا تشکر

S_VB.max
سه شنبه 14 آذر 1391, 19:30 عصر
من می خوام فرم اصلی برنامه را تبدیل به dll کنم ولی جاهایی که MessageBox وجود داره خطا داده میشه

namespace ClassLibrary1
{
public class Class1
{
public void method()
{
global::System.Windows.Forms.MessageBox.Show("Test");
}
}
}

sinashahab
چهارشنبه 15 آذر 1391, 00:21 صبح
دوستان فكر ميكنم روشتتون واسه تبديل فرم به dll اشتباهه.

اول بايد مثل يه application عادي يه پروژه ايجاد كنيد و به طراحي فرمتون بپردازيد و در اين فرآيند رو انجام بديد​:
Solution Explorer > AppForm > Right click > Properties > Application > Output Type > Class Library

فكر ميكنم ديگه مشكلي نباشه

مهرداد صفا
چهارشنبه 15 آذر 1391, 08:04 صبح
من می خوام فرم اصلی برنامه را تبدیل به dll کنم ولی جاهایی که MessageBox وجود داره خطا داده میشه

namespace ClassLibrary1
{
public class Class1
{
public void method()
{
global::System.Windows.Forms.MessageBox.Show("Test");
}
}
}

با سلام
namespace System.Windows.Forms درون System.Windows.Forms.dll قرار دارند و برای استفاده از کلاسهای آن باید گزینه System.Windows.Forms را از منوی Project/Add reference سربرگ .net را به پروژه اضافه کنیم که در WindowsFormsApplication این کار را visual studio به صورت خودکار انجام میدهد.

شاه وفا ابالفضل

مهرداد صفا
چهارشنبه 15 آذر 1391, 08:30 صبح
سلام -ممنونم M.safa عزیز- اما فک کنم سو تعبیر شده - من به تعداد فرم هام dll میخوام و نه فقط یک dll- ممکنه دوستان برنامه بسیار ساده ای با دو فرم بعنوان نمونه اینجا قرار بدن (که هر دو dll شده باشه و بشه باهاشون کار کرد و برنامه اجرا کرد)- تشکر
خواهش میکنم.

مراحل زیر را دنبال کنید:
1- visual studio را باز کرده و از منوی file آیتم new project را باز کنید.
2- از شاخه visual C#‎ آیتم class library را انتخاب کنید.
3- از منوی view گزینه Solution Explorer را باز کرده روی class1.cs رفته و آن را حذف کنید.
4- از منوی project گزینه Add New Item را باز کرده و از Visual C#‎ Items آیتم Windows Form را به پروژه اضافه کنید.
5- فرم را به صورت دلخواه طراحی کرده و پروژه را build کندی.
6- مراحل 1 تا 5 را به تعداد مورد نیاز تکرار کنید.
7- یک Windows Forms Application جدید ایجاد کرده و سپس ازمنوی project گزینه Add Reference را باز کرده از سربرگ brows به آدرسی که اولین پروژه را ذخیره کردید بروید و در پوشه bin فایل class library1.dll را اضافه کنید.
8- روی شاخه Form1.cs در Solution Explorer کلید delete و سپس ok را بزنید تا فرم پیشفرض حذف شود.
9- کد کلاس program را از فایل program.cs باز کرده:
using ClassLibrary1;
را به ابتدای آن اضافه کنید.
10- اگر در مرحله 4 از نام Form1 استفاده کرده اید پروژه را اجرا کنید در غیر این صورت در روال main کلمه Form1 را نام فرم خود جایگزین کنید.

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

شاه وفا ابالفضل

Sal_64
چهارشنبه 15 آذر 1391, 15:52 عصر
سلام -ممنونم M.safa عزیز- از حوصله و توضیحات شما- توضیحات خوندم واضح بود - اما یه سوال برام پیش اومده و اون وابستگی فرم هاست به هم - اگه من در هر پروژه تنها یک فرم طراحی کنم و کدهای لازم براش بنویسم- چطور میتونم اونها بهم ربط بدم - و اینکه چطور میتونم از صحت ارتباط فرم ها به هم مطمئن شم ؟؟ آیا باید اول کل برنامه در یک پروژه Windows Forms Application انجام بدم و بعد از رفع ایراد ها ،فرم ها دونه دونه در پروژه هایclass library جداگانه کپی کنم و ازش dll بگیرم؟؟ بازم از توجهت ممنونم

Sal_64
چهارشنبه 15 آذر 1391, 16:06 عصر
دوستان فكر ميكنم روشتتون واسه تبديل فرم به dll اشتباهه.

اول بايد مثل يه application عادي يه پروژه ايجاد كنيد و به طراحي فرمتون بپردازيد و در اين فرآيند رو انجام بديد​:
Solution Explorer > AppForm > Right click > Properties > Application > Output Type > Class Library

فكر ميكنم ديگه مشكلي نباشه

سلام - من پروژه Windows Forms Application که از قبل ایجاد کرده بودم برطبق روش شما خواستم به dll ها تبدیل کنم- که این خطا رخ داد.

مهرداد صفا
چهارشنبه 15 آذر 1391, 20:11 عصر
سلام -ممنونم M.safa عزیز- از حوصله و توضیحات شما- توضیحات خوندم واضح بود - اما یه سوال برام پیش اومده و اون وابستگی فرم هاست به هم - اگه من در هر پروژه تنها یک فرم طراحی کنم و کدهای لازم براش بنویسم- چطور میتونم اونها بهم ربط بدم - و اینکه چطور میتونم از صحت ارتباط فرم ها به هم مطمئن شم ؟؟ آیا باید اول کل برنامه در یک پروژه Windows Forms Application انجام بدم و بعد از رفع ایراد ها ،فرم ها دونه دونه در پروژه هایclass library جداگانه کپی کنم و ازش dll بگیرم؟؟ بازم از توجهت ممنونم
سلام

خواهش میکنم.
میتوانید از شیوه ای که در پست شماره 2 گفته شد استفاده کنید، به این ترتیب که اول پروژه اصلی Windows Forms Aplication را ایجاد کرده سپس Class Libraryها را از طریق Add Project به Solution اضافه کنید و در نهایت Class Library ها را به Reference اضافه کنید که البته با شیوه ای که خودتان مطرح کردید هم فرق چندانی ندارد جز اینکه همه پروژه ها تست خواهند شد.
فقط فراموش نکنید که Class Library ها را به هم لینک کنید.
امیدوارم موفق باشید.

شاه وفا ابالفضل

Sal_64
چهارشنبه 15 آذر 1391, 22:44 عصر
سلام
فقط فراموش نکنید که Class Library ها را به هم لینک کنید.
شاه وفا ابالفضل

سلام - بازم تشکر - ببینید توضیحات شما کامل اما بدلیل کم تجربگی من در این زمینه - بدون نمونه برنامه پیشروی خیلی کند - من اومدم یدونه Windows Forms Aplication ایجاد کردم و داخلش دو تا فرم انداختم - و در مرحله بعد دو تا پروژه جداگانه Class Library ایجاد کردم و خواستم فرم های برنامه بهش اضافه کنم - که با خطا مواجه شد لطفا نمونه کد ببینید- تشکر

Sal_64
جمعه 17 آذر 1391, 13:05 عصر
سلام - مشکل پروژه بالا این بود که حتما می بایست در هر فرم ، dll فرم فرزند (فراخوان شده) هم اضافه شود - یعنی فرمها باید از آخر به اول تبدیل به dll کرد. نمونه اولیه و بسیار ساده ای ایجاد کردم - که اینجا میذارم که برای دوستان راهنمای کوچکی باشه. بازم از توضیحات دوستان بالاخص M.safa عزیز متشکرم