1. Trang chủ
  2. » Công Nghệ Thông Tin

Công cụ của .NET phần đầu

10 405 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Biên dịch các đoạn mã ngắn với Snippet Compiler
Thể loại Tài liệu hướng dẫn
Định dạng
Số trang 10
Dung lượng 179,37 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giới thiệu một số công cụ của .NET Phần phụ lục này giới thiệu một số công cụ nhỏ hầu hết là miễn phí nhưng rất tốt cho các nhà phát triển .NET, trong đó có những công cụ giúp phát triển

Trang 1

Giới thiệu một số công cụ của NET

Phần phụ lục này giới thiệu một số công cụ nhỏ (hầu hết là miễn phí) nhưng rất tốt cho

các nhà phát triển NET, trong đó có những công cụ giúp phát triển ứng dụng nhanh hơn

và có những công cụ có thể làm thay đổi cách thức viết mã lệnh của bạn

1 Biên dịch các đoạn mã ngắn với Snippet Compiler

2 Xây dựng biểu thức chính quy với Regulator

3 Sinh mã với CodeSmith

4 Viết kiểm thử đơn vị với NUnit

5 Kiểm soát mã lệnh với FxCop

6 Khảo sát assembly với NET Reflector

7 Lập tài liệu mã lệnh với NDoc

8 Tạo dựng giải pháp với NAnt

9 Các công cụ chuyển đổi: ASP.NET Version Switcher, Visual Studio NET Project Converter, VB.NET to C# Converter, và Convert C# to VB.NET

10 Xây dựng website quản trị cơ sở dữ liệu với ASP.NET Maker 1.1

Snippet Compiler là một ứng dụng nhỏ dùng để viết, biên dịch, và chạy mã lệnh Công cụ

này hữu ích khi bạn có những đoạn mã ngắn và bạn không muốn phải tạo toàn bộ dự án

Visual Studio NET (cùng với các file đi kèm) cho chúng

Lấy ví dụ, giả sử bạn muốn chạy một ứng dụng nào đó từ Microsoft NET Framework Trong Snippet Compiler, bạn hãy tạo một ứng dụng Console mới Phần mã lệnh có thể

được tạo bên trong phương thức Main của ứng dụng này Đoạn mã dưới đây trình bày

cách tạo một thể hiện của Notepad từ NET Framework:

using System;

using System.Collections;

public class MyClass

{

public static void Main()

{

System.Diagnostics.Process proc = new System.Diagnostics.Process();

proc.StartInfo.FileName= "notepad.exe";

proc.Start();

proc.WaitForExit();

}

}

Trang 2

Hình A-1 Snippet Compiler

Hình A-1 cho thấy đoạn mã này trong Snippet Compiler Để thử nghiệm đoạn mã này, bạn chỉ việc nhấn nút Play (hình tam giác xanh), và nó sẽ chạy ở chế độ gỡ rối Đoạn mã này sẽ sinh ra một cửa sổ pop-up (ứng dụng Console), và Notepad sẽ xuất hiện Khi bạn đóng Notepad, ứng dụng Console cũng sẽ đóng

1 Snippet Compiler được viết bởi Jeff Key và có thể được download tại

[http://www.sliver.com/dotnet/SnippetCompiler]

Regulator là một công cụ với đầy đủ tính năng dùng để xây dựng và kiểm tra các biểu

thức chính quy Biểu thức chính quy được sử dụng để định nghĩa các mẫu trong những chuỗi dựa trên ký tự, tần số xuất hiện, và thứ tự ký tự Chúng thường được sử dụng nhiều nhất để làm phương tiện xác nhận tính tính hợp lệ của đầu vào do người dùng cung cấp hoặc tìm một chuỗi ký tự bên trong một chuỗi lớn hơn—chẳng hạn, khi tìm kiếm một địa

chỉ URL hay e-mail trên một trang web

Regulator cho phép bạn nhập một biểu thức chính quy và một đầu vào nào đó (bạn sẽ

chạy biểu thức chính quy dựa trên đầu vào này) Bằng cách này, bạn có thể thấy cách thức làm việc của biểu thức chính quy và kết quả trả về trước khi hiện thực nó trong ứng

dụng của mình Hình A-2 cho thấy Regulator với một biểu thức chính quy đơn giản

Trang 3

Hình A-2 Regulator với một biểu thức chính quy đơn giản

Phần document chứa biểu thức chính quy, trong ví dụ này là [0-9]*, biểu thức này trùng khớp với bất kỳ dãy chữ số nào Hộp ở phía dưới phải chứa đầu vào cho biểu thức chính quy, và hộp ở phía dưới trái hiển thị những trùng khớp mà biểu thức chính quy tìm thấy bên trong các đầu vào Viết và kiểm tra các biểu thức chính quy trong một ứng dụng độc lập như thế này thì dễ hơn nhiều so với thao tác chúng trong ứng dụng của bạn

Một trong những tính năng hay nhất của Regulator là khả năng tìm kiếm thư viện biểu thức chính quy trực tuyến tại [http://regexlib.com] Ví dụ, nếu nhập chuỗi "phone" vào

hộp tìm kiếm, bạn sẽ tìm thấy hơn 20 biểu thức chính quy khác nhau trùng khớp với các

số điện thoại, bao gồm các biểu thức cho Anh, Úc, và nhiều số điện thoại khác

2 Regulator được viết bởi Roy Osherove và có thể được download tại

[http://regex.osherove.com]

CodeSmith là một công cụ sinh mã dựa-trên-template (khuôn mẫu), sử dụng một cú pháp tương tự như ASP.NET để kết sinh bất kỳ kiểu mã hay text nào Khác với nhiều công cụ sinh mã khác, CodeSmith không yêu cầu bạn mô tả một bản thiết kế hay kiến trúc ứng dụng cụ thể Khi sử dụng CodeSmith, bạn có thể kết sinh mọi thứ, từ một tập hợp đơn

giản, được-định-kiểu-mạnh đến toàn bộ một ứng dụng

Khi xây dựng một ứng dụng, bạn thường phải lặp đi lặp lại những tác vụ nào đó, chẳng

hạn viết mã truy xuất dữ liệu hay xây dựng các tập hợp tùy biến CodeSmith đặc biệt hữu

ích trong những tình huống như vậy, vì bạn có thể viết các template để tự động hóa các tác vụ này, điều này không chỉ cải thiện hiệu năng mà còn giúp bạn bớt nhàm chán

The image part with relationship ID rId6 was not found in the file.

Trang 4

CodeSmith có sẵn một số template, bao gồm những template cho tất cả các kiểu tập hợp NET cũng như những template để sinh thủ tục tồn trữ, nhưng sức mạnh thực sự của công

cụ này chính là khả năng tạo các template tùy biến

Template của CodeSmith chỉ là file văn bản đơn thuần (có thể được tạo bằng công cụ soạn thảo văn bản bất kỳ), với phần mở rộng là cst

Template được giới thiệu dưới đây sẽ nhận một chuỗi và rồi xây dựng một lớp dựa vào chuỗi đó Bước đầu tiên là viết phần header, phần này khai báo ngôn ngữ của template, ngôn ngữ đích, và mô tả vắn tắt về template:

<%@ CodeTemplate Language="C#"

TargetLanguage="C#"

Description="Car Template" %>

Phần kế tiếp của template là các khai báo thuộc tính, các thuộc tính này sẽ được chỉ định mỗi khi template chạy Ví dụ dưới đây khai báo một thuộc tính chuỗi:

<%@ Property Name="ClassName" Type="String" Category="Context"

Description="Class Name" %>

Khai báo này sẽ làm cho thuộc tính ClassName xuất hiện trong cửa sổ thuộc tính của

CodeSmith để nó có thể được chỉ định khi template chạy

Bước tiếp theo là xây dựng phần thân của template (với mã lệnh tương tự như ASP.NET)

Như bạn có thể thấy, template này nhận chuỗi nhập và sinh ra một lớp với tên đó Trong

phần thân của template, các thẻ đóng và mở được sử dụng như trong ASP.NET Trong

template này, ta chỉ chèn giá trị thuộc tính, nhưng cũng có thể sử dụng bất kỳ kiểu mã

.NET nào bên trong các thẻ này

public sealed class <%= ClassName %>

{

private static volatile <%= ClassName %> _instance;

private <%= ClassName %>() {}

private static readonly object _syncRoot = new object();

public static <%= ClassName %> Value

{

get

{

if (_instance == null)

{

lock(_syncRoot)

{

if (_instance == null)

{

_instance = new <%= ClassName %>();

}

Trang 5

}

}

return _instance;

}

}

}

Một khi template đã hoàn tất, bạn hãy nạp nó vào CodeSmith (xem hình A-3) Bạn có thể

nhận thấy thuộc tính phía bên trái là thuộc tính mà chúng ta đã khai báo trong template

Nếu bạn nhập “SingletonClass” làm tên lớp và nhắp nút Generate, CodeSmith sẽ sinh ra

lớp dưới đây:

public sealed class SingletonClass

{

private static volatile SingletonClass _instance;

private SingletonClass() {}

private static readonly object _syncRoot = new object();

public static SingletonClass Value

{

get

{

if (_instance == null)

{

lock(_syncRoot)

{

if (_instance == null)

{

_instance = new SingletonClass();

}

}

}

return _instance;

}

}

}

Trang 6

Hình A-3 Nạp template vào CodeSmith

CodeSmith tương đối dễ sử dụng và có thể sinh ra những kết quả tuyệt vời nếu được áp

dụng một cách đúng đắn Một trong những phần phổ biến nhất cần được sinh mã là tầng

truy xuất dữ liệu CodeSmith có một assembly đặc biệt với tên là SchemaExplorer,

assembly này có thể được sử dụng để sinh ra các template từ bảng, thủ tục tồn trữ, hay

hầu như bất kỳ đối tượng SQL Server nào khác

3 CodeSmith được viết bởi Eric J Smith và có thể được download (bản dùng thử) tại [http://www.ericjsmith.net/codesmith/download.aspx]

NUnit là bộ khung kiểm thử đơn vị được xây dựng cho NET Framework, cho phép bạn

viết các phương thức kiểm thử theo ngôn ngữ do bạn chọn để kiểm tra một hàm cụ thể

của chương trình Ứng dụng NUnit cung cấp một bộ khung để viết các kiểm thử đơn vị,

cũng như một giao diện đồ họa để chạy các kiểm thử đơn vị và xem kết quả

Ví dụ, chúng ta cần kiểm tra chức năng của lớp Hashtable trong NET Framework để xác

định hai đối tượng có thể được thêm vào và lấy ra hay không Bước đầu tiên là tham

chiếu đến assembly NUnit.Framework để có thể truy xuất các thuộc tính và phương thức của bộ khung NUnit Bước kế tiếp là tạo một lớp và đánh dấu nó với đặc tính [TestFixture] để NUnit biết lớp này có chứa phương thức kiểm thử

using System;

using System.Collections;

using NUnit.Framework;

namespace NUnitExample

{

[TestFixture]

Trang 7

public class HashtableTest {

public HashtableTest() {

}

}

}

Kế tiếp, chúng ta tạo một phương thức và đánh dấu nó với đặc tính [Test] để NUnit biết

đây là phương thức kiểm thử Trong phương thức này, chúng ta sẽ thiết lập một Hashtable và đưa vào đó hai giá trị, sau đó sử dụng phương thức Assert.AreEqual để xem chúng ta có thể thu lấy đúng các giá trị mà chúng ta đã đưa vào Hashtable hay không: [Test]

public void HashtableAddTest()

{

Hashtable ht = new Hashtable();

ht.Add("Key1", "Value1");

ht.Add("Key2", "Value2");

Assert.AreEqual("Value1", ht["Key1"], "Wrong object returned!");

Assert.AreEqual("Value2", ht["Key2"], "Wrong object returned!");

}

Để chạy phương thức kiểm thử này, bạn cần tạo một dự án NUnit, mở assembly đã được sinh ra bên trên và nhắp nút Run Hình A-4 cho thấy kết quả

Trên đây chỉ là một kiểm thử đơn giản, nhưng cho thấy khả năng của NUnit Có rất nhiều

kiểu kiểm thử, cũng như nhiều phương thức Assert, có thể được sử dụng để kiểm thử mọi phần trong mã lệnh của bạn

Một kiểm thử đơn vị có thể lưu và chạy lại mỗi khi bạn sửa đổi mã lệnh, điều này giúp bạn phát hiện lỗi dễ dàng hơn và đảm bảo phát triển ứng dụng tốt hơn

4 NUnit là một dự án mã nguồn mở và có thể được download tại

[http://www.nunit.org]

Trang 8

Hình A-4 NUnit

Cũng có một bản add-in của NUnit cho Visual Studio NET, add-in này cho phép bạn trực tiếp chạy các phương thức kiểm thử đơn vị từ Visual Studio NET (có thể được download tại [http://sourceforge.net/projects/nunitaddin])

Để có thêm thông tin về NUnit và vị trí của nó trong việc phát triển test-driven (vận hành theo kiểm thử), bạn hãy xem bài viết “Test-Driven C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques” trong đĩa CD đính

kèm

.NET Framework rất mạnh, có nghĩa khả năng tạo ra những ứng dụng tuyệt vời là rất cao, nhưng khả năng tạo ra những chương trình tồi cũng là rất cao FxCop là một trong những

công cụ có thể được sử dụng để trợ giúp tạo ra những ứng dụng tốt hơn bằng việc cho phép bạn khảo sát một assembly và kiểm tra tính tương thích của nó với một số quy luật

FxCop chứa tập các quy luật do Microsoft tạo ra, nhưng bạn cũng có thể tạo ra những quy

luật cho mình Chẳng hạn, nếu muốn tất cả các lớp đều có một phương thức khởi dựng mặc định không đối số, bạn có thể viết một quy luật kiểm tra phương thức khởi dựng trên mỗi lớp của assembly Để có thêm thông tin về việc tạo những quy luật tùy biến, bạn hãy

vào [http://msdn.microsoft.com/msdnmag/issues/04/06/bugslayer]

Ví dụ, chúng ta hãy xem FxCop phát hiện ra lỗi gì trong assembly NUnitExample (đã được trình bày mục A.4) Trước tiên, bạn cần tạo một dự án FxCop và đưa assembly này vào Sau đó, bạn hãy nhấn Analyze, FxCop sẽ khảo sát assembly này và đưa ra các thông

báo lỗi (xem hình A-5)

Trang 9

FxCop nhận thấy một số vấn đề với assembly này Bạn có thể nhắp đúp lên một lỗi để

xem chi tiết, bao gồm lời mô tả quy luật và nơi mà bạn có thể tìm thấy nhiều thông tin hơn

FxCop có thể giúp bạn tạo mã lệnh tốt hơn, nhất quán hơn, nhưng nó không thể sửa chữa việc thiết kế tồi hay lập trình kém FxCop cũng không phải là một sự thay thế cho việc kiểm tra mã lệnh (code review), nhưng vì nó có thể bắt nhiều lỗi trước khi kiểm tra mã

lệnh nên bạn có thể dành nhiều thời gian cho các vấn đề hệ trọng hơn là phải lo lắng về các quy ước đặt tên

Hình A-5 FxCop đưa ra các thông báo khi khảo sát NUnitExample

5 FxCop được phát triển bởi Microsoft và có thể được download tại

[http://www.gotdotnet.com/team/fxcop]

.NET Reflector là một trình duyệt lớp (class browser) và trình dịch ngược (decompiler),

nó có thể khảo sát một assembly và cho bạn thấy tất cả các “bí mật” trong đó .NET Framework đã đưa ra cơ chế phản chiếu (reflection) để khảo sát bất kỳ mã lệnh nào dựa-trên-.NET, cho dù nó là một lớp đơn hay toàn bộ một assembly Cơ chế phản chiếu cũng

có thể được sử dụng để thu lấy thông tin về các lớp, phương thức, và thuộc tính khác

nhau trong một assembly nào đó Sử dụng NET Reflector, bạn có thể duyệt các lớp và các phương thức của một assembly, bạn có thể khảo sát ngôn ngữ trung gian (Microsoft

The image part with relationship ID rId9 was not found in the file.

Trang 10

Intermediate Language⎯MSIL) do các lớp và phương thức này sinh ra, và bạn có thể dịch ngược các lớp và phương thức sang C# hay Visual Basic NET

Ví dụ, chúng ta sẽ sử dụng NET Reflector để khảo sát assembly NUnitExample (đã được trình bày ở mục A.4) Hình A-6 thể hiện assembly này khi được nạp vào NET Reflector Bên trong NET Reflector còn có những công cụ mà bạn có thể sử dụng để khảo sát thêm assembly này Để xem MSIL của một phương thức, bạn hãy nhắp vào phương thức này

và chọn Disassembler

Ngoài việc xem MSIL, bạn cũng có thể xem phương thức ở dạng C# bằng cách chọn Decompiler từ trình đơn Tools Bạn cũng có thể xem phương thức này được dịch ngược sang Visual Basic NET hay Delphi bằng cách thay đổi tùy chọn trong trình đơn

Languages Dưới đây là đoạn mã do NET Reflector sinh ra:

public void HashtableAddTest()

{

Hashtable hashtable1 = new Hashtable();

hashtable1.Add("Key1", "Value1");

hashtable1.Add("Key2", "Value2");

Assert.AreEqual("Value1", hashtable1["Key1"],

"Wrong object returned!");

Assert.AreEqual("Value2", hashtable1["Key2"],

"Wrong object returned!");

}

Ngày đăng: 28/10/2013, 12:15

HÌNH ẢNH LIÊN QUAN

Hình A-1 Snippet Compiler - Công cụ của .NET phần đầu
nh A-1 Snippet Compiler (Trang 2)
Hình A-2 Regulator với một biểu thức chính quy đơn giản - Công cụ của .NET phần đầu
nh A-2 Regulator với một biểu thức chính quy đơn giản (Trang 3)

TỪ KHÓA LIÊN QUAN

w