Tải bản đầy đủ (.pdf) (101 trang)

Luận văn xây dựng hệ thống hỗ trợ tra cứu lỗi lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.19 MB, 101 trang )

HUTECH

B GIÁO DC VÀ ÀO TO
TRNG I HC DÂN LP K THUT CÔNG NGH
KHOA CÔNG NGH  THÔNG TIN
= = = 
 = = =






LUN VN TT NGHIP

 TÀI:
XÂY DNG H THNG H TR
TRA CU LI LP TRÌNH








GVHD : NGUY N CHÁNH THÀNH
SVTH : NGUY N DUY HÒA – MSSV: 10102062
VÕ C HIN – MSSV: 10102056
LP : 01CNPM







Thaønh phoá Hoà Chí Minh, Thaùng 01 - 2006

HUTECH
LI CM N


Lun vn tt nghip là mt trong nhng s kin
quan trong đi ngi , và ngày hôm nay chúng em đã
hoàn thành đc điu y. Và điu mà chúng em mun nói
đn đu tiên là li chân thành cm n sâu sc đn bc
thy cô, nht là tt c thy cô giáo trng i Hc
K thut Công Ngh, đc bit là đi ng thy cô giáo
khoa Công Ngh Thông Tin đã tn tình dy d, truyn
đt nhng kin thc vô cùng quý báo đ cho chúng em
có th hoàn thành đc đ án tt nghip nh ngày hôm
nay.
Và đc bit cm n đn thy Nguyn Chánh Thành,
ngi đã tn tình hng dn chúng em thc hin tt đ
tài này.
Và cng xin gi li cm n đn các bn, nhng
ngi đã có nhng gp ý chân thành và quý giá trong
quá trình thc hin đ tài này.
Dù có nhiu n lc trong quá trình hin th c đ
tài, nhng  ln đu tiên nên cng khó tránh khi
nhng vng mc và sai sót. Chúng em rt mong nhn

đc nhng ý kin đóng góp, và s hng dn chân tình
ca quý thy cô.





Xin chân thành cm n.





TP .HCM, Tháng 1 / 2006
HUTECH
MC LC




Chng I: GII THIU V  TÀI1
I. Gii thiu1
II.Chc nng1

Chng II: KIN THC MÔI TRNG PHÁT TRIN VÀ ADD-IN2
I. Môi trng phát trin DTE2
I.1. i tng DTE2
I.2. Thêm mt tham chiu ti không gian tên EnvDTE4
I.3. Tham chiu đi tng DTE 5
I.4. Nhng đi tng chính trong project5

I.4.1. i tng Events5
I.4.2. i tng BuildEvents6
I.4.3. i tng CommandEvents7
I.4.4. i tng TaskListEvents8
I.4.5. i tng OutputWindowEvents9
I.4.6. i tng Window10
I.4.7. i tng OutputWindowPane10
II. K thut Add-In11
II.1. To mt đi tng Add-in12
II.2. Các bc to đi tng Add-in bng Wizard12
II.3. Kt qu các lnh ca đi tng Add-in14
II.4.  phc hi các lnh ca đi tng Add-in ti menu14
II.5. iu khin đi tng Add-In vi Add-In Manager15
II.6.  np mt đi tng Add-In ngay tc thì16
II.7. Ch đnh Add-in np lên khi môi trng khi đng16
II.8. Triu gi các đi tng Add-In thông qua dòng lnh Devenv17
II.9. ng ký đi tng Add-In17
II.10.Các s kin chính trong Add-In project19
II.10.1. Phng thc OnConnect19
II.10.2. Phng thc OnStartupComplete21
II.10.3. Phng thc OnAddInsUpdate22
II.10.4. Phng thc OnBeginShutdown23
II.10.5. Phng thc OnDisconnection24

Chng III: KIN THC WEB SERVICE26
I. Gii thiu v Web Service26
I.1. Vn đ chia s d liu26
I.2. Gii quyt bng phát trin các ng dng phân tán26
I.3. Web Service27
I.3.1. Các đc đim ca Web service27

I.3.2. Li ích khi s dng Web service28
HUTECH
II. C s h tng Web Services28
II.1. Các chun và giao thc28
II.2. Các thành phn ca Web service29
II.2.1. Web service Directories29
II.2.2. Web service Discovery30
II.2.3. Web service Description30
II.2.4. Web service Wire Format30
II.3. Giao tip gia Client và Web service31
III. Giao thc triu gi Web Services31
III.1. HTTP-GET31
III.2. HTTP-POST33
III.3. SOAP33
IV. Xây dng, trin khai và s dng Web Service34
IV.1. Xây dng Web service34
IV.2. Trin khai Web service36
IV.2.1. Trin khai Web service bng cách copy36
IV.2.2. Các thành phn đc trin khai trong Web service37
IV.2.3. S dng Web service38
IV.2.3.1 Thêm Web Reference vào ng dng khách(client)38
IV.2.3.2 Phát sinh lp Proxy40
IV.2.3.3 To mt đi tng ca lp Proxy41
IV.2.3.4 Truy xut Web Service s dng mt đi tng proxy42
V. Bo mt42
V.1. Authentication43
V.1.1. Anonymous Access44
V.1.2. Windows Authentication45
V.1.2.1. Role - Base Security45
V.1.2.2. Basic Authentication46

V.1.2.3. Digest Authentication46
V.1.2.4. Integrated Windows Authentication47
V.1.3. Passport Authentication47
V.1.4. Form Authentication47
V.1.4.1. Login Form48
V.1.4.2. nh dng IIS48
V.1.4.3. nh dng ASP.NET49
V.2. Authorization49
V.2.1. File Authorization49
V.2.2. URL Authorization50

Chng IV: PHÂN TÍCH - THIT K - THC HIN52
I. Phân tích52
I.1. Nhim v52
I.2. Phng án52
I.2.1. Xây dng ng dng Admin Website
và Web Service theo mô hình đa tng52
I.2.2. Xây dng Web Client theo mô hình phân tán
HUTECH
s dng công ngh Web Service54
I.2.3. S dng h qun tr c s d liu SQL Server 200054
I.2.4. Ngôn ng s dng: ASP.NET54
I.2.5. Phân tích các nghip v ca h thng bng ngôn ng UML55
I.2.6. Xây dng add-in55
II. Thit k và thc hin56
II.1. Thit k c s d liu56
II.1.1. Biu đ quan h56
II.1.2. Các bng d liu ca h thng58
II.1.2.1. Bng ErrorCode58
II.1.2.2. Bng ErrorItems58

II.1.2.3. Bng Items58
II.1.2.4. Bng Chapters58
II.1.2.5. Bng Parts59
II.1.2.6. Bng Books59
II.1.2.7. Bng Users59
II.1.3. Các StoreProcedure59
II.2. Phân tích h thng61
II.2.1. S đ hat đng61
II.2.2 S đ tun t chc nng ca Add-in63
II.2.3. S đ tun t chc nng Web Admin64
II.2.3.1. S đ tun t chc nng qun lý sách64
II.2.3.2. S đ tun t chc nng qun lý phn trong sách65
II.2.3.3. S đ tun t chc nng qun lý chng66
II.2.3.4. S đ tun t chc nng qun lý mc67
II.2.3.5. S đ tun t chc nng qun lý li68
II.2.3.6. S đ tun t chc nng qun lý thêm mc vào li69
II.2.3.7. S đ tun t chc nng qun lý chi tit li70
II.2.4. S đ tun t cho chc nng tìm kim trong Web Client71
II.3. Phn Add-In72
II.3.1. Cài đt phn Add-in72
II.3.2. Thêm đi tng Add-in thông qua hp thoi Add-in Manager73
II.3.3. Hin th danh sách li73
II.3.4. Hin tr trang thông tin chi tit li74
II.4. Phn Web Admin75
II.4.1. Màn hình chính qun lý sách75
II.4.2. Màn hình chi tit sách76
II.4.3. Màn hình thêm sách mi76
II.4.4. Màn hình xoá sách77
II.4.5. Màn hình chnh sa sách78
II.4.6. Màn hình qun lý phn(Parts)78

II.4.7. Màn hình qun lý chng79
II.4.8. Màn hình qun lý mc80
II.4.9. Màn hình chi tit và cp nht ni dung mc80
II.4.10.Màn hình thêm m
c mi81
II.4.11.Màn hình qun lý li81
HUTECH
II.4.12.Màn hình chi tit li82
II.4.13.Màn hình xoá li83
II.4.14.Màn hình thêm mc cho li83
II.5. Phn Web Client84
II.5.1. Màn hình tìm kim84
II.5.2. Màn hình ni dung mc liên quan đn li85
II.6. Phn Web Service85
II.6.1. Tng quát85
II.6.2. Chi tit các phng thc86

Chng V: ÁNH GIÁ D ÁN VÀ HNG PHÁT TRIN87
I. ánh giá87
I.1. Hoàn thành87
I.2. Cha hoàn thành87
II. Hng phát trin87
HUTECH
MC LC HÌNH

Hình 2.1: Mô hình đi tng t đng trên Visual Studio .NET3
H ình 2.2: To Add-in project bng trình Visual Studio Add-in Wizard12
H ình 2.3: Hp thoi Add-In Manager15
H ình 3.1: Các thành phn ca Web service giúp client xác đnh và gi các
phng thc ca Web service30

Hình 3.2: Th t trong lp HttpWebClientProtocol.32
H ình 3.3: Hp thoi New Project34
H ình 3.4: Hp thoi New Project35
H ình 3.5 Màn hình project Web Services35
H ình 3.6: Màn hình cu hình IIS36
H ình 3.7: Hp thoi Properties ca trang web37
H ình 3.8: Màn hình Add Web Reference39
H ình 3.9: Hp thoi Add Web Reference39
H ình 3.10: Hp thoi Add Web Reference40
H ình3.11: Màn hình hin th các file trong Web Services41
Hình 3.12: Tng quan v bo mt.42
Hình 3.13: Hp thoi default Web Site Properties44
Hình 3.14: Hp thoi Authentication Methods44
Hình 3.15: Mànhình Computer Management46
Hình 3.16: Access Control List50
H ình 4.1: Biu đ quan h ca h thng56
Hình 4.2: S đ hot đng ca h thng61
H ình 4.3: S đ tun t chc nng ca Add-in63
Hình 4.4: S đ tun t chc nng qun lý sách64
Hình 4.5: S đ tun t chc nng qun lý phn trong sách65
Hình 4.6: S đ tun t chc nng qun lý chng trong sách66
Hình 4.7: S đ tun t chc nng qun lý mc trong sách67
Hình 4.8: S đ tun t chc nng qun lý li68
HUTECH
Hình 4.9: S đ tun t chc nng qun lý thêm mc vào li69
Hình 4.10: S đ tun t chc nng qun lý chi tit li70
Hình 4.11: S đ tun t chc nng tìm kim trong Web Client71
Hình 4.12: Cài đt h thng Add-in v ào Visual Studio .NET 200372
Hình 4.13: Hp thoi Add-In Manager73
Hình 4.14: Màn hình hin th Tab Add-In73

Hình 4.15: Màn hình hin th trang chi tit li74
Hình 4.16: Màn hình qun lý sách75
Hình 4.17: Màn hình hin th chi tit sách76
Hình 4.18: Màn hình thêm sách mi76
Hình 4.19: Màn hình xoá sách77
Hình 4.20: Màn hình cp nht sách78
Hình 4.21: Màn hình qun lý phn trong sách78
Hình 4.22: Màn hình qun lý chng trong sách79
Hình 4.23: Màn hình qun lý mc trong sách80
Hình 4.24: Màn hình cp nht mc80
Hình 4.25: Màn hình thêm mc mi81
Hình 4.27: Màn hình qun lý li82
Hình 4.28: Màn hình cp nht li82
Hình 4.29: Màn hình xoá li83
Hình 4.30: Màn hình thêm mc vào li84
Hình 4.31: Màn hình tra cu li84
Hình 4.32: Màn hình ni dung mc liên quan đn li85



HUTECH
MC LC BNG

Bng 2.1: S kin và hot đng ca đi tng BuildEvents6
Bng 2.2: S kin và hot đng ca đi tng CommandEvents7
Bng 2.3: S kin và hot đng ca đi tng TaskListEvents8
Bng 2.4: S kin và hot đng ca đi tng OutputWindEvents9
Bng 2.5: Các tu chn cho load đi tng Add-in18
Bng 2.6: Ý ngh a ca c CommandPreload18
Bng 3.1: Kiu và các giá tr ca thuc tính trong authentication43

Bng 3.2: Chc nng phân quyn trong bo mt Authorization51
Bng 4.1: B ng ErrorCode
Bng 4.2: Bng ErrorItems
Bng 4.3: Bng Items
B ng 4.4: Bng Chapters
B ng 4.5: Bng Parts
B ng 4.6: Bng Books
B ng 4.7: Bng Users
Bng 4.8: B ng Các Store Procedure
Bng 4.9: Chc nng các control trong màn hình qun lý sách75
Bng 4.10: Chc nng các control trong màn hình chi tit sách76
Bng 4.11: Chc nng các control trong màn hình thêm sách mi77
Bng 4.12: Chc nng các control trong màn hình xoá sách77
Bng 4.13: Chc nng các control trong màn hình cp nht sách78
Bng 4.14: Chc nng các control trong màn hình qun lý phn trong sách79
Bng 4.15: Chc nng các control trong màn hình qun lý chng trong sách79
Bng 4.16: Chc nng các control trong màn hình qun lý mc trong sách80
Bng 4.7: Chc nng các control trong màn hình cp nht mc81
Bng 4.18: Chc nng các control trong màn hình thêm mc mi82
Bng 4.191: Chc nng các control trong màn hình qun lý li82
Bng 4.20: Chc nng các control trong màn hình cp nht li83
HUTECH
Bng 4.21: Chc nng các control trong màn hình xoá li83
Bng 4.22: Chc nng các control trong màn hình thêm mc vào li84
Bng 4.23: Chc nng các control trong màn hình tra cu li85
B ng 4.24: Chi tit các phng thc 86











HUTECH


B GIÁO DC & ÀO TO CNG HÒA XÃ HI CH NGHA VIT NAM
I HC DL K THUT CÔNG NGH TP.HCM C LP – T DO – HNH PHÚC
144/24 in Biên Ph - Q. Bình Thnh - TPHCM _____oOo_____
T: 5120254 - 5120294
Khoa: Công Ngh Thông Tin
B môn: Công ngh phn mm

NHIM V THC HIN  ÁN TT NGHIP
Chú ý: Sinh viên phi dán nhim v bn này vào trang th nht
trong tp báo cáo đ án tt nghip

H và tên : Nguyn Duy Hoà MSSV : 10102062
Võ c Hin MSSV : 10102056
Ngành :
Công ngh phn mm Lp : 01CNPM
1. u đ đ án tt nghip :
XÂY DNG H THNG H TR TRA CU LI LP TRÌNH
2. Nhim v :
a. D liu ban đu:
Tìm hiu Web Service, môi trng phát trin Visual Studio .NET 2003 và
k thut Add-in.

b. Ni dung:
 Phân tích thit k các yêu cu ca h thng:
Phân tích và thit k s đ hot đng ca h thng.
Phân tích và thit k s đ tun t ca các nhip v
Phân tích và thit k c s d liu
 Hin thc các yêu cu ca h thng:
Xây d
ng phn Add-In vào môi trng phát trin ca VS.NET 2003.
Xây dng Web Server theo mô hình 3 lp.
3. Ngày giao nhim v đ án : 3/10/2005
: 9/1/2006
5. H tên giáo viên hng dn : ThS. Nguyn Chánh Thành

HUTECH
Ni dung và yêu cu đ án tt nghip đã thông qua. GIÁO VIÊN HNG DN CHÍNH
TP.HCM, ngày ……… tháng ……… nm 2006 (Ký và ghi rõ h tên)
CH NHIM KHOA

(Ký và ghi rõ h tên)




PHN DÀNH CHO B MÔN
Ngi duyt (chm s b):
n v:
Ngày bo v:
im tng quát:

HUTECH

 Lun vn tt nghip Chng 1

Nguyn Duy Hoà V õ c Hin Trang 1

Chng I: GII THIU V  TÀI
I. Gii thiu
Lp trình là mt công vic vô cùng khó khn, đòi hi lp trình viên phi
có kin thc rng rãi cng nh mt k nng lp trình tt đ có th bt tay thc
hin các d án phn mm. Vn đ mt ngi lp trình cn có 1 công c h tr
nhm gii đáp các thc mc liên quan đn kin thc lp trình là nhu cu rt
thit thc trong quá trình dy hc trong ngành Công ngh thông tin đ có th có
công c nào giúp trút bt gánh nng trong vic lp trình.  tài “Xây dng h
thng h tr tra cu li lp trình trong môi trng lp trình Visual Studio
.NET 2003” mà chúng tôi nhn tht s là mt điu mà không ch cá nhân tôi
mà rt nhiu các lp trình viên khác hng mong c.
 tài này xây dng mt công c h tr vic tra cu li trong môi
trng lp trình Visual Studio .NET 2003. Công c này bao gm 2 phn; phn
add-in tng tác vi môi trng phát trin ca VS.Net 2003 (IDE), ngoài ra
còn h tr thêm mt Web Server cho phép phn add-in truy cp ti kho d liu
đ nhn v thông tin liên quan đn li. Ngoài ra, Web Server còn cho phép các
client đng ký, truy cp và xem các thông tin v li.

II. Chc nng
u tiên, đ s dng h thng h tr tra cu li lp trình, ngi dùng
cn cài đt công c này. H thng h tr tra cu li có các chc nng sau:
• Sau khi biên dch, phn Add -in s truy cp vào h thng Visual Studio
.NET 2003 ly danh sách li, và hin th trong tab OutputWindow.
• T tab OutputWindow này cho phép ngi dùng click vào hyperlink
bên cnh mã li đ mang v thông tin liên quan đn li đó.
• i vi ngi qun tr c s d liu, h có th truy cp vào h thng

bng quyn Admin và qun tr d liu.
• i vi ngi dùng thông thng, h có th đng ký account, và truy
cp vào trang web đ tra cu các thông tin liên quan đn li.

HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 2

Chng II: KIN THC MÔI TRNG PHÁT TRIN VÀ
ADD-IN
I. Môi trng phát trin DTE
I.1. i tng DTE
Là đi tng trên cùng trong mô hình đi tng t đng hoá ca b
Visual Studio.
Tt c các đi tng và các thành viên trong mô hình t đng hoá Visual
Studio.NET đu da trên đi tng DTE. i tng DTE tiêu biu cho môi
trng phát trin đc tích hp trên Visual Studio.NET và là đi tng trên
cùng trong mô hình h thng cp bc. Nó đt trong mt không gian tên gi là
EnvDTE. Tên ca sn phm to ra trên .NET đi vi khô ng gian tên này là
“envdte” và đc cha đng trong mt file gi là envdte.dll. Tên th vin có
dng nh COM là Microsoft Development Environment 7.0” và đc cha
đng trong file gi là dte.olb.
i tng DTE đc cung cp ti bn qua phng thc OnConnection
mà bn cài đt khi to ra mt đi tng Add-In. i tng DTE là đi tng
Application trong Visual Basic.
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 3



Hình 2.1: Mô hình đi tng t đng trên Visual Studio .NET
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 4

 truy cp ti các thuc tính ch đnh trong d án nh VBProjects hay
CSharpProjects, hãy dùng cu trúc DTE.GetObject(“VBProjects”).
Minh ho:

Sub DTEExample()
Dim objTextDoc As TextDocument
Dim objEP As EditPoint
'To mt tài liu vn bn mi.
DTE
'Ly quyn điu khin ti tài liu mi.
.ItemOperations.NewFile("General\Text File")
Set objTextDoc = DTE
Set objEP = objTextDoc.StartPoint.CreateEditPoint
.ActiveDocument.Object("TextDocument")
'To mt EditPoint và thêm đon vn bn.
objEP.Insert "A test sentence."
End Sub

I.2. Thêm mt tham chiu ti không gian tên EnvDTE
Dù bn chn đi tng .NET assembly hay loi th vin dng COM tu
thuc vào project ca bn. Khi bn to mt đi tng Add-in s dng trình
Add-In Wizard (trong bt k ngôn ng nào) hay khi bn to mt macro, thì

mt tham chiu ti không gian tên EnvDTE đc thit lp sn cho bn. Nu
bn mun truy cp ti phn bên ngoài ca các đi tng t đng hoá ca các
đi tng macro hay các đi tng Add-in đc to bi trình Add-In Wizard
thì bn phi thit lp bng tay tham chiu này.
 thêm mt tham chiu ti không gian tên EnvDTE trong Visual C#
.NET, ta thc hin nh sau:
1. Trong khung Solution Explorer, bn click phi chut trên project
node hoc trên Reference node và chn AddReference.
2. Trong hp thoi Add Reference, click vào tab có kiu component
mà bn mun, nh .NET hay COM. Tìm trong danh sách các
component và chn envdte hay Microsoft Development
Environment 7.0, sau đó click OK.
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 5

I.3. Tham chiu đi tng DTE
Mt khi project ca bn đã có tham chiu ti môi trng EnvDTE, thì
bn có th thit lp mt tham chiu ti đi tng DTE theo đon code sau:
EnvDTE.DTE myDTE;
myDTE =
(EnvDTE.DTE)Microsoft.VisualBasic.Interaction.CreateObject("Vis
ualStudio.DTE.7.1", "");
-or-
EnvDTE.DTE dte;
DTE =
(EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObj
ect("VisualStudio.DTE.7.1") // Ly mt thc th ca môi //
trng Visual Studio .NET IDE hin hành đang chy.


Nhng đ truy cp vào bên trong môi trng phát trin ca VS.NET
2003, ly mã li và hin th trên VS.NET 2003, chng trình cn s dng các
đi tng sau đây làm vic nh các macro: đi tng Events, BuildEvents,
CommandEvents, TaskListEvents, OutputWindowEvents, Window,
OutputWindowPane và các phng thc s kin OnConnect,
OnStartupComplete, OnAddInsUpdate, OnBeginShutdown, OnDisconnection.

I.4. Nhng đi tng chính trong project
I.4.1. i tng Events
Cho phép truy cp ti tt c các s kin trong mô hình m rng. Các s
kin này cng có th đc phi bày t các đi tng ch đnh bên trong mô
hình m rng DTE.
DTE
Events
Nhn xét:

Mô hình t đng hoá cha đng mt đi tng s kin gc Events mà
các clients cùng loi đc vit  bt kì ngôn ng nào cng có th tham chiu
ti các s kin t đng hoá. Các công c IDE , các loi project khác nhau, có
th thêm các s kin b sung ti đi tng Events mà chúng ch đnh.
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 6

Minh ho:
Public Module Module1
Dim WithEvents bldevents As BuildEvents
Dim applicationObject As EnvDTE.DTE


Sub EventsExample()
Dim addInInstance As EnvDTE.AddIn

applicationObject = CType(Application, EnvDTE.DTE)
bldevents = CType(applicationObject.Events.BuildEvents,
EnvDTE.BuildEvents)
End Sub

Private Sub bldevents_OnBuildDone(ByVal Scope As
EnvDTE.vsBuildScope,
ByVal Action As EnvDTE.vsBuildAction) Handles
bldevents.OnBuildDone
MsgBox("Build complete")
End Sub
End Module

I.4.2. i tng BuildEvents
Cung cp các s kin cho gii pháp to dng.
DTE
Events
BuildEvents
Thuc tính:

public BuildEvents BuildEvents {get;}
Tr v đi tng BuildEvents, cung cp các s kin cho các gii pháp
xây dng.
Các s kin:

S kin

Hot đng
OnBuildBegin
Xut hin trc khi solution xây dng, trc khi
d án bt đu xây dng
OnBuildDone
Xut hin sau khi mt solution hoàn tt quá
trình xây dng.
OnBuildProjConfigBegin
Xut hin khi vic đnh hình mt d án bt đu.
OnBuildProjConfigDone
Xut hin khi vic đnh hình mt d án kt thúc.
Bng 2.1: S kin và hot đng ca đi tng BuildEvents
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 7

I.4.3. i tng CommandEvents
Cung cp các s kin dòng lnh cho các client t đng hoá.
DTE
Events
CommandEvents
Thuc tính:

public CommandEvents CommandEvents(
string Guid,
int ID
) {get;}
Tham s:


Guid: đc yêu cu. ây là GUID cho nhóm lnh. Nu Guid là
Null hoc Nothing, thì CommandEvents tr v mt đi tng
CommandEvents tng trng cho tt c các lnh trong môi trng.
ID: đc yêu cu. Mt ch mc trong nhóm lnh tng ng vi
lnh c th. Nu ID là Null hay Nothing, thì CommandEvents tr v mt đi
tng CommandEvents tng trng cho tt c các lnh trong nhóm.
Giá tr tr v:

Mt đi tng CommandEvents.
Các s kin:
S kin
Hot đng
AfterExecute
Xut hin sau khi mt lnh thc thi
BeforeExecute
Xut hin trc khi mt lnh thc
thi
Bng 2.2: S kin và hot đng ca đi tng CommandEvents
Nhn xét:

i tng CommandEvents đc tr v bi thuc tính
CommandEvents ca đi tng Events.
Minh ho:
<System.ContextStaticAttribute()> Public WithEvents
CommandEvents As
EnvDTE.CommandEvents
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 8



Public Sub CommandEvents_AfterExecute(ByVal Guid As String,
ByVal ID As
Integer, ByVal CustomIn As Object, ByVal CustomOut As Object)
Handles
CommandEvents.AfterExecute
MsgBox("test")
End Sub

I.4.4. i tng TaskListEvents
Cung cp các s kin cho các thay đi ti danh sách tác v.
DTE
Events
TaskListEvents
Thuc tính:

public TaskListEvents TaskListEvents(
string Filter
) {get;}
Tham s:

Filter: tu chn. ây là tên ca danh mc tác v. Nu Filter đc
h tr, thì đi tng TaskListEvents ch cung cp các s kin cho danh mc
đó. Nu Filter không đc h tr mt giá tr danh mc hp l, thì thuc tính
TastListEvents b hng.
Giá tr tr v:

Mt đi tng TaskListEvents.
Các s kin:

S kin
Hot đng
TaskAdded
Xut hin khi mt tác v mi đc thêm ti Task List.
TaskModified
Xut hin khi mt tác v trong Task List đc sa đi.
TaskNavigated
Xut hin lp tc trc khi bn điu hng ti ngun ca
mt tác v trong Task List.
TaskRemoved
Xut hin khi mt tác v b loi b khi Task List.
Bng 2.3: S kin và hot đng ca đi tng TaskListEvents
Ghi chú:

i tng TaskListEvents đc tr v bi DTE.Events.
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 9

I.4.5. i tng OutputWindowEvents
Cung cp các thay đi ti ca s Output.
DTE
Events
OutputWindowEvents
Thuc tính:

public OutputWindowEvents OutputWindowEvents(
string Pane
) {get;}

Tham s:

Pane: tu chn. ây là tên ca mt ca s kt qu Output. Nu
Pane đc h tr, thì đi tng OutputWindowEvents ch cung cp các s
kin cho khung đó.

Giá tr tr v:

Khung không cn phi tn ti khi đi tng
OutputWindowEvents đc to. Nu khung đc to bt k lúc nào thì các
s kin s đc t đng cung cp cho nó.
Các s kin

S kin
Hot đng
PaneAdded
Xut hin khi mt khung ca s Output mi đc to
PaneClearing
Xut hin khi tt c vn bn trong khung ca s Output b xoá
PaneUpdated
Xut hin khi vn bn mi đc thêm ti mt khung trong ca
s Output.
Bng 2.4: S kin và hot đng ca đi tng OutputWindEvents
Ghi chú:

i tng OutputWindowEvents đc tr v bi DTE.Events.
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 10


I.4.6. i tng Window
i tng Window hin th mt ca s trong môi trng.
DTE
Windows
Window
Thuc tính:

public Window Window {get;}
Giá tr tr v:

Mt đi tng Window.
Minh ho:
Sub WindowExample()
Dim objTW As TextWindow
Dim objPane As TextPane
Dim objStart As TextPoint

objTW = ActiveWindow.Object
objPane = objTW.ActivePane

MsgBox("The active pane is " & Str(objPane.Height) & " lines
high and " & Str(objPane.Width) & " columns wide.")
objStart = objPane.StartPoint
MsgBox("It begins at line " & Str(objStart.Line) & ", column
" & Str(objStart.LineCharOffset) & ".")
objPane.Window.Close()
End Sub

I.4.7. i tng OutputWindowPane

Hin th mt khung trong ca s Output.
DTE
Windows
Window
OutputWindow
OutputWindowPanes
OutputWindowPane
Ghi chú:

Ca s Output hin th kt qu dng vn bn. Ca s Output có th có
mt hay nhiu khung, đc hin th bi đi tng OutputWindowPane. Mi
công c IDE s dng mt khung ca s output khác nhau. Các khung đc
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 11

chn vi mt hp x xung ti đnh ca ca s. Chng hn, quá trình build
errors thì đi vi khung “Build Errors”, trong khi mi công c lnh bên ngoài đi
vi khung ca s output riêng bit ca nó.
Minh ho:

Sub OutputWindowPaneExample()
' Create a tool window handle for the Output window.
Dim win As Window =
DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
' Create handles to the Output window and its panes.
Dim OW As OutputWindow = win.Object
Dim OWp As OutputWindowPane


' Add a new pane to the Output window.
OWp = OW.OutputWindowPanes.Add("A New Pane")
' Add a line of text to the new pane.
OWp.OutputString("Some Text")
End Sub

II. K thut Add-In
 to mt công c cho mt nhim v hoc đ to mt công c đ giúp
nhng lp trình viên khác to ra các phn mn ca h, bn có th s dng mô
hình vi k thut t đng trên Visual Studio .NET. mô hình vi k thut t
đng, đc bit đn trong phiên bn trc ca Visual Studio .NET nh mô
hình có kh nng m rng, là mt giao din lp trình cho phép bn truy cp ti
các th tc bên di có chy môi trng phát trin đc tích hp, cho phép
hiu chnh, thao tác và t đng hoá nó. Chng hn, bn có th to các d án và
các mc lc d án mt cách lp trình hay t đng hoá vic xây dng mt d án
và các tin trình trin khai d án.
Chú ý:
Kh nng m rng là kh nng cho phép phát trin và m rng
chc nng ca IDE. K thut t đng hoá nói đn mã đc to ra theo thao tác
ca user và các công c mà t đng hoá các tác v trong môi trng và chy
IDE theo cách đc lp trình.
Bn có th truy cp ti mô hình t đng hoá thông qua các macro trên
VS.NET (VSMacros), bng cách to các m rng cho IDE dc gi là Add-in,
hay bng cách cài đt mt mc mi hoc các Add Project wizard . Các Add-
in đc biên dch thành các app mà có th thao tác vi môi trng làm vic và
các tác v t đng hoá. Các Add -in có th đc triu gi theo mt trong các
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 12


cách khác nhau, bao gm Add-in Manager, toolbar command hay các nút, các
dòng lnh, hay thông qua các s kin nh khi đng IDE.
Trong phn h tr ti mô hình đi tng chung đc cung cp bi
Visual Studio .NET ti tt c các ngôn ng lp trình , các công c và các gói
ca nó, riêng vi các ngôn ng lp trình trên Visual Studio .NET cng có th
cung cp các b sung k thut riêng ca chúng ti mô hình đi tng t đng
hoá nhm h tr các đc đim riêng bit và các thành phn. Tt yu bn có th
to mt đi tng Add-in mà làm vic rt tt vi b t k ngôn ng nào trên
Visual Studio .NET, hay đi vi ngôn ng nào đc ghép vào đ cung cp
nhng đim đc bit ca mt ngôn ng riêng bit, chng hn VB hay VC++.
II.1. To mt đi tng Add-in
Trình Add-in Wizard cho phép to mt đi tng Add-in vi đy đ các
khung chc nng mà có th chy ngay sau khi bn hoàn tt nó. Sau khi trình
Add-in Wizard to mt b khung c bn, bn có th thêm code ti nó và hiu
chnh nó.
Chú ý: các đi tng dc to trong VS.NET 2003 s không làm vic
chính xác trong VS.NET 2002.
Bn có th to mt macro đ truy cp ti mô hình t đng hoá trên VS
nh mt s la chn cho vic to ra mt đi tng Add-in.
II.2. Các bc to đi tng Add-in bng Wizard

H ình 2.2: To Add-in project bng tr ình Visual Studio Add-in Wizard
HUTECH
 Lun vn tt nghip Chng 2

Nguyn Duy Hoà V õ c Hin Trang 13

Trình Add-in Wizard cho phép bn cung cp mt tên hin th và mô t
cho đi tng Add-in, c hai xut hin trong hp thoi Add-In Manager. Bn

có th chn đ cho trình Wizard to mã mà cho phép thêm mt lnh ti menu
Tools đ load và triu gi đi tng Add-in. Khi trình Wizard hoàn tt, bn có
đc môt project mi vi mt môđun đn gin đ cài đt đi tng Add-in.
Bn cng có đc setup project đ to ra file .msi mà có th đc dùng đ cài
đt đi tng Add-in trên h thng khác (hay đ cp nht vic đng ký ca đi
tng Add-in trên máy trin khai mà đôi khi là cn thit đi vi nhng gì mà
bn làm vi đi tng Add-in ca bn).
Các bc thc hin:

1. To mt VS Add-In project mi. Bn có th tìm thy project này t
mc Extensibility Projects bên di Other Projects
2. Chn mt ngôn ng t khung Select a Programming Language.
iu này cho phép bn chn mt ngôn ng đi vi đi tng Add-in
đc to ra.
3. Chn mt hoc nhiu ng dng t khung Select an Application
Host. iu này cho phép bn chn các ng dng mà bn cng mun
chy đi tng Add-in sau khi to.
4. Nhp vào tên và mô t cho đi tng Add-in ca bn trong khung
Enter a Name and Description. Tên này s đc hin th trong
danh sách Available Add-Ins ca hp thoi Add-In Manager và cho
các user bit đc đi tng Add-in làm gì, làm nh th nào, và hn
th na.
5. Trong khung Choose Add-in Options, hãy ch đnh nhng gì mà
bn mun đi tng Add-in xut hin trong menu Tools, khi nào bn
mun đi tng Add-in xut hin, và nhng gì mà đi tng s cho
phép đi vi các đi tng khác hoc không. iu này cho phép bn
ch đnh các tu chn theo thói quen chc chn cho đi tng Add-in
ca bn.
6. Trong khung Choosing Help About Information, hãy ch đnh
nhng gì bn mun v mt hp thông tin Help About, và nu th,

×