c# and sqlserver and sqlserver.pdf · (2 ﻞﮑﺷ) ﺪﯿﻨﮐ ﮏﯿﻠﮐ ار connect to...

22
C# And SQL Server ذﺧﯿﺮه، وﯾﺮاﯾﺶ و ﺣﺬف درSQLServer ﺗﻮﺳﻂC# وLINQ اﯾﺠﺎد ﭘﺮوژهSetup ﺗﻮﺳﻂ: ﻣﻬﻨﺪس ﯾﻮﺳﻒ اﻣﯿﺮي ﺳﻄﺢ: ﻣﺘﻮﺳﻂ وﯾﺮاﯾﺶ: اردﯾﺒﻬﺸﺖ1389 ©2010 Itnee.com در اﯾﻦ ﻣﻘﺎﻟﻪ، ﺑﺎ ﻣﻔﺎﻫﯿﻢ زﯾﺮ آﺷﻨﺎ ﻣﯽ ﺷﻮﯾﺪ: آﻣﻮزش ﻧﺤﻮه ارﺗﺒﺎط ﺑﺎSQLServer در ﺳﯽ ﺷﺎرپ ذﺧﯿﺮه، ﺗﻐﯿﯿﺮ و ﺣﺬف رﮐﻮردﻫﺎي ﺟﺪول ﺗﻮﺳﻂC# اﺳﺘﻔﺎده از ﭘﺮوﺳﯿﺠﺮ ﻫﺎي ذﺧﯿﺮه ﺷﺪه درC# روش ارﺳﺎل ﭘﺎراﻣﺘﺮ ﺑﻪStored Procedures اﺳﺘﻔﺎده ازLINQ ﺑﺮاي ذﺧﯿﺮه و ﺑﺎزﯾﺎﺑﯽ داده ﻫﺎي ﺟﺪولSQL Server ﻧﺤﻮه ارﺳﺎل ﻣﺘﻐﯿﺮ و ﻓﯿﻠﺪ ﻫﺎي ﺟﺪول و ﮔﺮاﯾﺪ از ﻓﺮﻣﯽ ﺑﻪ ﻓﺮم دﯾﮕﺮ ارﺗﺒﺎط ﮔﺮاﯾﺪ) DataGridView ( ﺑﺎ ﺟﺪول ﺗﻮﺳﻂLINQ ﺑﻪ روز رﺳﺎﻧﯽ ﮔﺮاﯾﺪ ﭘﺲ از ﺗﻐﯿﯿﺮ در ﺟﺪول ﺑﺎﻧﮏ اﻃﻼ ﻋﺎﺗﯽ ﻣﺮاﺣﻞ اﯾﺠﺎد ﯾﮏ ﭘﺮوژه دﯾﺘﺎﺑﯿﺲ ﺗﻮﺳﻂC# اﯾﺠﺎد ﭘﺮوژهSetup در وﯾﮋوال اﺳﺘﻮدﯾﻮ

Upload: others

Post on 31-Jan-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

C# And SQL Server LINQو #Cتوسط SQLServerذخیره، ویرایش و حذف در

Setupایجاد پروژه

مهندس یوسف امیري :توسط متوسط: سطح

1389اردیبهشت : ویرایش

©2010 Itnee.com

:در این مقاله، با مفاهیم زیر آشنا می شوید

در سی شارپ SQLServerآموزش نحوه ارتباط با #Cذخیره، تغییر و حذف رکوردهاي جدول توسط

#Cاستفاده از پروسیجر هاي ذخیره شده در Stored Proceduresروش ارسال پارامتر به

SQL Serverبراي ذخیره و بازیابی داده هاي جدول LINQاستفاده از نحوه ارسال متغیر و فیلد هاي جدول و گراید از فرمی به فرم دیگر

LINQبا جدول توسط ) DataGridView(ارتباط گراید عاتیبه روز رسانی گراید پس از تغییر در جدول بانک اطال

#Cمراحل ایجاد یک پروژه دیتابیس توسط در ویژوال استودیو Setupایجاد پروژه

2

معرفـی

و باالتر و با استفاده از زبان Visual Studio 2008آموزشی قصد دارم براي دانشجویانی که می خواهند توسط PDFدر این C#، باSQL Server ارتباط برقرار کرده و در آن به ذخیره و بازیابی اطالعات بپردازند، از ابتدا و بصورت گام به گام، مراحل را

و ADO.NETاما در اینجا قصد ندارم از . ي استDatabaseتوانایی ایجاد اولین پروژه هدف از این بحث . توضیح دهمهمین کار را بصورت کامال LINQبلکه از طریق . کدنویسی هاي خسته کننده آن براي ارتباط با بانک اطالعاتی استفاده کنم

.شیء گرا انجام خواهیم داد

:اطالعاتی، دو نوع راه حل وجود دارد دسترسی به بانکهمانطور که می دانید از لحاظ

ایستگاه کاري .1

کالینت –سرور .2

و اغلب براي پروژه هاي دانشجویی شودبرخورد می SQL Serverدر حالت اول که موضوع این آموزش است، بصورت یک فایل با بانک اطالعاتی .کافیست

. یا می سازیم می کنیم) Attach( متصلنصب کرده و فایلهاي بانک اطالعاتی را به آن Serverرا روي یک سیستم SQL Serverدر حالت دوم، ی آنها کاربران و سطوح دسترس SQL Server Management Studioیا همان SQL Serverنرم افزار مدیریت Securityسپس در قسمت

استودیو با وال هر زمان که الزم شد توسط رابط ویژبرنامه نویسی کرده و سپس در کامپیوتر کالینت شروع به. می کنیم به بانک اطالعاتی را تعریفانجام می Connection Stringتوسط کاربر تعریف شده، ارتباط برقرار می کنیم این ارتباط توسط یک رشته کد به نام سرور و بانک اطالعاتی،

و آنرا در کالینتهاي دیگر نیز ) Visual Studioتوسط (می سازیم Setupسپس براي برنامه خود .گیرد که خود ویژوال استودیو آنرا می سازدایجاد، (در واقع نمونه هاي برنامه، با سرور ارتباط برقرار کرده و بطور مشترك نسبت به انجام چهار عمل اصلی روي داده ها . نصب می کنیم

.اقدام می کنند) ویرایش، حذف و جستجو

و بانک اطالعاتیرابط بین زبان برنامه نویسی

ري و به براي ارتباط با بانک اطالعاتی نیاز به یک رابط داریم که جدولها، پروسیجرهاي ذخیره شده و سایر اشیاء بانک اطالعاتی را در خود نگهداود و همان نقطه اي بسیار ناخوشایند و اغلب همراه با خطا و پیچیده ب ADO.NETو DAO ،ADOکار با رابطهاي قدیمی مانند . روز رسانی کند

توسعه نگاه شیء گراي خود را با NET 3.0.اما مایکروسافت سرانجام در ! بود که تازه کارها معموال پس از رسیدن به آن، دیگر ادامه نمی دادندLINQ، بر دیتابیس است اکنون جزو لذت بخش ترین مراحل توسعه نرم افزارهاي مبتنی ،به تکامل تحسین برانگیزي رساند و این بخش از کار.

3

Itneeه ژشروع کار با ایجاد پرو

.ایجاد کنید Visual Studioپروژه جدیدي در

)1شکل . (را براي ایجاد بانک اطالعاتی فعال کنید Server Explorerپانل

بانک اطالعاتی و مدیریت براي ایجاد Server Explorerفعال کردن پانل - 1 شکل

4

)2شکل ( را کلیک کنید Connect to Database ، آیکنConnection Stringبراي ایجاد بانک اطالعاتی و

بانک اطالعاتی انتخاب نوع -2 شکل

5

: انجام دهید 4و 3مراحل ایجاد بانک اطالعاتی را مانند شکلهاي

انتخاب نام بانک اطالعاتی - 3 شکل

ایجاد بانک اطالعاتی جدید - 4 شکل

6

آنرا از ساختار درختی باز کرده و با ) 5شکل (اضافه می شود Server Explorerپس از این مرحله، بانک اطالعاتی ایجاد شده و به پانل با کلیک راست روي اولین فیلد، آنرا به عنوان در هنگام وارد کردن نام فیلدها، .کنیم، اولین جدول را ایجاد می Tableکلیک راست روي

)6شکل (. کلید انتخاب می کنیم

باز کردن بانک اطالعاتی و ایجاد جدول در آن - 5 شکل

جزئیات ایجاد جدول - 6 شکل

7

براي ویرایش جدول یا دیدن اطالعات آن، روي نام جدول کلیک راست کرده و گزینه . پیش فرض ذخیره می کنیمجدول را با همان نام )7شکل . (مربوطه را انتخاب می کنیم

انجام تغییرات روي ساختار جدول و یا نمایش داده هاي آن - 7 شکل

8

پروسیجرهاي . ما این اعمال را توسط پروسیجرهاي ذخیره شده انجام می دهیم. حال نوبت به ذخیره، ویرایش و حذف در جدول می رسد. ایجاد می کنند... چند الیه، فراهم کردن امکان تغییرات سریع در برنامه و از نظر سرعت تراکنش، کد نویسیذخیره شده بهترین حالت را

)8شکل . (کلیک راست می کنیم Stored Proceduresمانند ایجاد یک جدول، این بار روي براي این کار، ه

ذخیره، ویرایش و حذف از جدول بانک اطالعاتی اعمال براي انجام ایجاد پروسیجر ذخیره شده - 8 شکل

با این کار . دزنیبرا Saveسپس دکمه . دکنیکرده و کد زیر را جایگزین آن ، همه کدهاي پیش فرض را حذفذخیرهبراي نوشتن پروسیجر )9شکل ( .ایجاد می شود pSaveیک پروسیجر به نام

CREATE PROCEDURE dbo.pSave @Row int, @Name nvarchar(20), @Family nvarchar(30) AS INSERT INTO Table1 VALUES(@Row, @Name, @Family) RETURN

9

ایجاد پروسیجرهاي ذخیره شده - 9 شکل

. را بزنید Saveسپس دکمه . ، مانند مرحله قبل یک پروسیجر جدید ایجاد کنید و کد زیر را جایگزین آن کنیدویرایشبراي نوشتن پروسیجر .ایجاد می شود pEditبا این کار یک پروسیجر به نام

CREATE PROCEDURE dbo.pEdit @Row int, @Name nvarchar(20), @Family nvarchar(30) AS UPDATE Table1 SET Name=@Name, Family=@Family WHERE Row=@Row RETURN

که البته می توانید در پروسیجر ویرایش فقط (همانطور که مشاهده می کنید پارامترهاي ورودي پروسیجر ذخیره و ویرایش با هم یکسان هستند لیه او فیلد کلیددر اینجا . کد ویرایش، از شرط استفاده شده است 4در خط ) . فیلدهایی را به عنوان پارامتر ورودي تعیین کنید که تغییرات دارند

را می نویسیم

را Saveپروسیجر جدیدي ایجاد کنید و کد زیر را در آن بنویسید و دکمه . اولیه نیاز داریم فیلد کلیدبراي نوشتن پروسیجر حذف فقط به :بزنید

CREATE PROCEDURE dbo.pDelete @Row int AS DELETE FROM Table1 WHERE Row=@Row RETURN

10

ایجاد پروسیجرهاي ذخیره شده - 10 شکل

LINQ To SQLایجاد

:به منوي زیر بروید LINQ to SQLبراي ایجاد

Project > Add New Item…

.را به آن بدهید LINQنام 11را انتخاب کنید و مطابق شکل LINQ to SQL Classesسپس گزینه

LINQایجاد - 11 شکل

11

پانل . را به پانلهاي آن درگ کنید) Table1, pSave, pEdit, pDelete(، چهار شیء ایجاد شده در بانک اطالعاتی LINQپس از ایجاد محیط ، ویژوال LINQمحیط نتقال اشیاء بهضمن ا )12شکل ( .سمت چپ براي جداول و ویوها و پانل سمت راست براي پروسیجرهاي ذخیره شده

)13شکل (. الزم را نیز می سازد Connection Stringعاتی را به مسیر پروژه کپی کرده و بانک اطالاستودیو

در حالت اولیه LINQمحیط - 12 شکل

براي ارتباط با آن Connection Stringتاییدیه انتقال بانک اطالعاتی به مسیر پروژه و ایجاد - 13 شکل

12

LINQاضافه کردن اشیاء آن به محیط اضافه شدن بانک اطالعاتی به پروژه، هنگام - 14 شکل

براي این کار کافیست آن . را نیز آپدیت کرد LINQپس از هر تغییر در جداول، ویوها و یا پروسیجرهاي ذخیره شده در بانک اطالعاتی، باید : نکته .را مجددا ذخیره کنید LINQ.dbmlحذف کرده و دوباره از بانک اطالعاتی به آن درگ کنید و فایل LINQشیء را از

ذخیره در بانک اطالعاتی

:طراحی و نام گذاري کنید 15فرم را مطابق شکل

روي فرم Saveطراحی بخش - 15 شکل

13

:کلیک کنید و کد زیر را براي آن بنویسید Saveدوبار روي دکمه

var db = new LINQDataContext(); db.pSave(Convert.ToInt32(txRow.Text), txName.Text, txFamily.Text);

!در واقع با این دو خط کد، شما موفق به ذخیره یک رکورد در بانک اطالعاتی شده ایدفراخوانی کرده و مقادیر کنترلهاي روي فرم را به LINQرا از pSaveایجاد می کند و خط دوم پروسیجر LINQخط اول یک متغیر از شیء

.آن ارسال می کند تا در جدول ذخیره شود

که کلید جدول ) txRow(براي ردیف البته فرض بر این است که شما چک می کنید، کاربر همه مقادیر روي فرم را به درستی وارد کرده است، و .ها را خالی می کنیدTextBoxو پس از ذخیره در جدول همه . است، یک مقدار عددي غیر تکراري وارد شده است

!و مقدار کاري که آنجا الزم بود ADO.NETمقایسه با

ADO.NET //using System.Data; //using System.Data.SqlClient;

Cn = new SqlConnection(@"Server=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\Itnee.mdf;Integrated Security=True;User Instance=True"); Cn.Open(); SqlCommand Cm = new SqlCommand("", Cn); Cm.CommandText = "INSERT INTO Table1(Row, Name, Family) VALUES(@Row,@Name,@Family)"; Cm.Parameters.AddWithValue("@Row",lbCode.Text); Cm.Parameters.AddWithValue("@Name", txName.Text); Cm.Parameters.AddWithValue("@Family", txFamily.Text); Cm.ExecuteNonQuery();

نمایش محتویات یک جدول از بانک اطالعاتی

به روز گراید،بهتر است به جاي پیامهاي ثبت موفقیت آمیز و اعمالی از این قبیل، نتیجه را بالفاصله در یک براي ملموس بودن عمل ذخیره، قرار gvTable1نام آنرا . دوبار کلیک کنید DataGridView، روي کنترل Dataو زیر مجموعه Toolboxبراي این کار از .رسانی کنید

:اضافه کنید Saveسپس کد زیر را به انتهاي دستورات دکمه . خصوصیات دیگر آنرا تنظیم کنید 16دهید و مطابق شکل

gvTable1.DataSource = db.Table1s;

بهتر ). شود Refreshید گرا. (به گراید بارگذاري شود Table1ستور سبب می شود با هر بار ذخیره رکورد جدید در بانک اطالعاتی، دوباره جدول داین :شامل دو رویداد زیر خواهد بود Form1تا این مرحله، . شدن فرم نیز همین کد را قرار دهیم تا محتویات جدول نمایش داده شود Loadاست در هنگام

private void Form1_Load(object sender, EventArgs e) {

var db = new LINQDataContext(); gvTable1.DataSource = db.Table1s;

}

14

private void btSave_Click(object sender, EventArgs e) { var db = new LINQDataContext();

db.pSave(Convert.ToInt32(txRow.Text), txName.Text, txFamily.Text); gvTable1.DataSource = db.Table1s;

}

:نکته مهم

می بینید هیچ کدام از رکوردهاي ذخیره کرده و دوباره باز کنید Closeچنانچه برنامه را . د و چند رکورد به آن اضافه کنیدمرحله، برنامه را اجرا کنیدر این ل فای Debug bin <در محیط ویندوز، به مسیر پروژه بروید و از پوشه. هستید Debugشما در حالت . نگران نباشید! شده وجود نداردItnee.exe تا زمان . و نتیجه را ببینید. را اجرا کنیدSetup سازي و ایجاد پروژه کامل صبر کنید.

اضافه کردن گراید به فرم براي نمایش اطالعات جدول - 16 شکل

ویرایش در بانک اطالعاتیو درگ کردن جدول آن بر روي فرم، در این DataSetاستفاده از . براي اضافه کردن قابلیت ویرایش به برنامه، راه حلهاي مختلفی وجود دارد راه. کاربر در همان گراید امکان ویرایش یا حذف را هم خواهد داشت. حالت ویژوال استودیو همه اشیاء الزم را می سازد و به فرم اضافه می کند

چون باید ببینید . معموال مشکالت گسترده اي در آینده بوجود خواهد آورد ،حل ساده ایست اما تغییرات در بانک اطالعاتی و یا گسترش برنامه .استفاده کنیم LINQاز طرفی قرار شد فقط از ! ویژوال استویو چکار کرده است که بتوانید آنرا تغییر دهید

کلید فیلد دقت کنید. هاي روي فرم منتقل شود TextBoxبه ردیف با دوبار کلیک کاربر روي یک ردیف از گراید، کلیه اطالعات آن :روش الف، دو Saveروي فرم، عالوه بر دکمه .) تا تغییر نکند. در آورید ReadOnlyرا به حالت txRow(در فرم بارگذاري شود ReadOnlyبه حالت

همانند Updateکد دکمه . این دو دکمه را فعال سازید را غیرفعال و Saveدر حالت ویرایش دکمه . نیز قرار دهید Cancelو Updateدکمه .استفاده می کنیم pEditخواهد بود با این تفاوت که از Saveدکمه

15

م دیگري منتقل شود و آنجا عمل ویرایش را هاي روي فر TextBoxبا دوبار کلیک کاربر روي یک ردیف از گراید، اطالعات آن ردیف به : روش ب :بسازید frEditزیر و با نام ا مشخصاتفرمی ب .استفاده می کنیم روش ببه دلیل جنبه آموزشی داشتن این پروژه، از . انجام دهیم

frEdit txRow txName txFamily FormBorderStyle FixedSingle ReadOnly True Modifiers Public Modifiers Public MaximizeBox False Modifiers Public MinimizeBox False StartPosition CenterParent

فرم ویرایش - 17 شکل

فرم ویرایش را فراخوانی می کند و سلولهاي گراید را به کنترلهاي آن می (گراید، کد زیر را بنویسید DoubleClickدر فرم اصلی، براي رویداد .)دارند تا از فرم اصلی بتوان آنها را دید Modifiers=Publicخصوصیت frEditفرم TextBoxبه یاد داشته باشید که هر سه . فرستد

private void gvTable1_DoubleClick(object sender, EventArgs e) { if (gvTable1.RowCount > 0) { var f = new frEdit(); f.txRow.Text = gvTable1.CurrentRow.Cells["Row"].Value.ToString(); f.txName.Text = gvTable1.CurrentRow.Cells["Name"].Value.ToString(); f.txFamily.Text = gvTable1.CurrentRow.Cells["Family"].Value.ToString(); f.ShowDialog(); var db = new LINQDataContext(); gvTable1.DataSource = db.Table1s; //Refresh Grid After Edit } }

:بنویسید btCancelو btUpdateکد زیر را براي دکمه هاي frEditدر فرم

private void btUpdate_Click(object sender, EventArgs e) { var db = new LINQDataContext(); db.pEdit(Convert.ToInt32(txRow.Text), txName.Text, txFamily.Text); Close(); } private void btCancel_Click(object sender, EventArgs e) { Close(); }

16

حذف از بانک اطالعاتیسپس کد زیر را براي آن . قرار دهید btDeleteدر این حالت یک دکمه زیر گراید و با نام . حذف از بانک اطالعاتی، ساده ترین مرحله است

:بنویسید

private void btDelete_Click(object sender, EventArgs e) { if (gvTable1.RowCount <= 0) return;

if (MessageBox.Show("Do you want to delete?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

{ var db = new LINQDataContext(); db.pDelete(Convert.ToInt32(gvTable1.CurrentRow.Cells["Row"].Value)); gvTable1.DataSource = db.Table1s; //Refresh Grid After Delete } }

اضافه کردن دکمه حذف به فرم - 18 شکل

قدرت و سرعت زیادي به توسعه دهندگان می دهد و هزینه نگهداري و ایجاد ویرایش هاي بعدي برنامه را کاهش می LINQهمانطور که دیدید

استفاده نکردیم و با کد نویسی خیلی کمی موفق به انجام اعمال اصلی روي دیتابیس ADO.NETدر این پروژه ما از هیچکدام از اشیاء . دهدرا ترکیب SQLو #Cکدهاي ( .را در الیه هاي کامال مجزا و کنترل شده انجام دادیم Databaseو Applicationهمچنین توسعه . شدیم

.بسیار حائز اهمیت است ،این کار براي پروژه هاي بزرگ) نکردیم

17

جستجو در جدول، این مرحله را توسط LINQبراي آشنایی بیشتر با . فراهم کردن جستجوي اطالعات جدول، حلقه کد نویسی بانک اطالعاتی را کامل می کند

که پارامتر ورودي آن، فیلد مورد جستجو یا بخشی از آن باشد یک pSearchهرچند نوشتن پروسیجري با نام (پروسیجر ذخیره شده نمی نویسیم :تغییر دهید 19فرم را مطابق شکل ). است راه حل خوب

اضافه کردن بخش جستجو به فرم - 19 شکل

:کد زیر را بنویسید txFamilySearchکنترل TextChangedبراي رویداد

private void txFamilySearch_TextChanged(object sender, EventArgs e) {

var db = new LINQDataContext(); if (txFamilySearch.Text == "") gvTable1.DataSource = db.Table1s; //Load All Records to Grid else gvTable1.DataSource = db.Table1s.Where(c => c.Family.Substring(0, txFamilySearch.Text.Length) == txFamilySearch.Text).Select(c => c); }

متغیري است که به جدول اشاره می کند و C. نوشته شده است LINQدر اینجا ما شرطی روي جدول وضع کرده ایم که توسط عبارات المبداي :عبارت شرطی به این معنی است. آنرا فراخوانی کرده ایم Familyفیلد

.آن مساوي عبارت مورد جستجو بود را انتخاب کن Familyفیلد ) txFamilySearchبه طول (هر رکوردي که بخش سمت چپ

18

براي پروژه Setupایجاد

در ویژوال استودیو به مسیر زیر بروید

File > Add > New Project …

Itneeبه سلوشن Setupاضافه کردن پروژه - 20 شکل

در پنجره اي که پس از آن . منتقل کنید Setup، خروجی برنامه را به پروژه 21کلیک راست کنید و مطابق شکل Application Folderبرروي .را بزنید OKباز می شود، دکمه

Setupانتقال فایهاي پروژه به – 21 شکل

19

، روي خروجی 22براي این کار مطابق شکل . فایل اجرایی در دسکتاپ و یا منوي استارت سیستم مقصد است Shortcutحال نوبت به ایجاد

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

روي دسکتاپ کاربر Shortcutایجاد - 22 شکل

براي این کار، دوباره در قسمت . اضافه شود Setupپروژه ما داراي یک بانک اطالعاتی است که باید به . هنوز یک قسمت مهم باقی مانده استApplication Folder 23شکل (کلیک راست کنید(

Setupاضافه کردن فایل بانک اطالعاتی به - 23 شکل

.را انتخاب و اضافه کنید itnee_log.ldfو itnee.mdfفایل 2به مسیر پروژه بروید و ، شرکت سازنده، نسخه نرم Uninstallو Setupتا نام پروژه هنگام . را سفارشی می کنیم Setupپس از اضافه کردن فایلها، خصوصیات پروژه

مقادیر 24را انتخاب کنید و مطابق شکل Setupپروژه Solution Explorerبراي این کار در پانل . مقادیر درستی داشته باشند... افزار و .دلخواه را وارد کنید

20

Setupسفارشی کردن پروژه - 24 شکل

سازي Setupآخرین مرحله از

Setupفایل دوبرویم و Debugپوشه > Setupپوشه >ه ما ایجاد شده است و کافیست به مسیر پروژه ژپرو Setupتا این مرحله، در واقع اما پروژه ما براي اجرا نیازمند .را اجرا کنیم Setup.exeآنها نصب کنیم، ببریم و رایجاد شده را به سیستمهایی که می خواهیم برنامه را د

Framework 3.5 .Net و همچنینSQLExpress گرچه در ویندوزهاي . استVista وWindows7 محیط.NET با سیستم عامل عرضهویژوال استودیو قادر است قبل از نصب برنامه، از نصب Setup. نصب شود NET Framework 3.5.الزم است ابتدا XPاما در ویندوز . می شود

مرحله، پیش نیازهاي نصب برنامه در این . م عامل اطمینان حاصل کند و سپس نسبت به نصب برنامه، اقدام کندبودن پیش نیازهاي آن روي سیست .اضافه می کنیم تا در صورت نیاز، آنها نیز نصب شوند Setupرا به پروژه

21

. باز شود Setup Property Pagesرا انتخاب کنید تا پنجره Propertiesکلیک راست کنید و Solution Explorerدر Setupروي پروژه را بزنید …Prerequisitesسپس دکمه ) 25شکل (

براي نصب برنامه Setupاضافه کردن پیش نیازهاي - 25 شکل

.را تنظیم کنید Prerequisites، 26مطابق شکل

Setupانتخاب پیش نیازهاي نصب برنامه و اضافه کردن آنها به پوشه - 26 شکل

22

باعث کپی شدن پیش نیازها به پوشه Download prerequisites from the same location as my applicationانتخاب گزینه Setup اما . می شود که حجم پروژه شما را باال می بردSetup همیشه کار خواهد کرد!

را با خیال Setup.exeرا به سیستم مقصد ببرید و فایل Debugکل محتویات پوشه . کنید و به مسیر آن بروید Buildرا Setupحال پروژه !راحت اجرا کنید

.دریافت کنید www.itnee.comه را می توانید از وب سایت ژسورس این پرو©2010 Itnee.com. All Rights Reserved.