十个必备的.NET开发小工具
?
本文將介紹下列工具:
?
·?? 代碼片段編譯工具: Snippet Compiler
·?? 正則表達式構(gòu)建工具: Regulator
·?? 代碼生成工具: CodeSmith
·?? 單元測試工具: NUnit
·?? 代碼分析與檢查工具: FxCop
·?? .NET 程序集檢查工具: .NET Reflector
·?? 代碼文檔創(chuàng)建工具: NDoc
·?? 解決方案編譯工具: NAnt
·??? 版本切換與轉(zhuǎn)換工具: ASP.NET Version Switcher 和 Visual Studio .NET Project Converter
?
?
沒有好的工具,就寫不出好的程 序。除了眾所周知的工具(例如, Visual Studio? .NET )以外, .NET 社區(qū)里還有許多聲名未廣的小工具。本文將簡單介紹一些很好的針對 .NET 開發(fā)的免費工具及其使用方 法,它們有的會從方方面面節(jié)省你編程的時間,有的則可能會徹底改變你編寫代碼的方式。由于在一篇文章中談及這么多工具,所以我無法作全面的介紹,但你應(yīng)當 充分了解它們,確定哪些對你的項目有用。
Snippet Compiler
Snippet Compiler 是一個基于 Windows? 的小應(yīng)用程序,利用它能夠編寫、編譯和運行 . NET 代碼。如果你有小段代碼需要 測試而又不想專門為它專門創(chuàng)建完整的 Visual Studio .NET 項目時,這個工具很有用。
例如,我要向你展示如何從 Microsoft? .NET Framework 調(diào)出 Notepad 應(yīng)用程序,代碼片段如下:
System.Diagnostics.Process proc = new System.Diagnostics.Process();proc.StartInfo.FileName= "notepad.exe";
proc.Start();
proc.WaitForExit();
?
我可以在 Snippet Compiler 中新建一個默認的控制臺應(yīng)用程序(譯注:代碼框架已生成),然后在它的 Main 方法中寫入代碼片段,如圖 1 所示。
?
?
?
圖 1 Snippet Compiler
?
要測試這段代碼,只需按工具條上的 start 按鈕(綠色三角),它就會運行 在調(diào)試方式下。該段代碼產(chǎn)生一個控制臺窗口,然后調(diào)出 Notepad 。關(guān)閉 Notepad ,控制臺窗口也隨之關(guān)閉。
?
我發(fā)現(xiàn)為求助者編寫小例程時, Snippet Compiler 非常有用。通常,我必須先創(chuàng)建一個項目,保證所有代碼編譯成功后,把代碼片段發(fā)給求助者,然后再刪除項目。有了 Snippet Compiler ,這個過程就很容易。?
Snippet Compiler 由 Jeff Key 編寫,可以從這里下載: http://www.sliver.com/dotnet/SnippetCompiler 。
?
?
[ 以下內(nèi)容為譯者補充,摘自: http://royo.is-a-geek.com/regulator ]
Snippet Compiler 主要功能:
- 編譯和運行一個或多個 C# 、 VB.NET 和 ASP.NET 代碼片段
- 可選擇編譯 WinForm EXE 文件、控制臺 EXE 文件或 DLL 文件
- 用戶可存儲模板庫
- 顯示編譯錯誤和警告,包括在編輯器中以波浪線提示
- 智能感應(yīng)( IntelliSense )靜態(tài)成員、方法及構(gòu)造器簽名
- 導(dǎo)入 VS.NET 項目
- 可方便置入任務(wù)欄通知區(qū)
- 將代碼片段導(dǎo)出為 HTML 文件或 RTF 文件
?
=======================================================================
Regulator
Regulator是 最近才加入到我的必備工具列表中的。它是一個功能全面、易于使用的正則表達式構(gòu)建和測試工具。正則表達式定義了基于字 符、字符出現(xiàn)頻率和字符順序的字符串匹配模式,通常用于驗證用戶輸入或在長字符串中進行子串查找,例如,在網(wǎng)頁上查找 URL 或 e-mail 地址。
?
你可以在 Regulator 中輸入一條正則表達式和一些測試內(nèi)容(或打開文件),利用它來測試正則表達式的匹配結(jié)果,如圖 2 所示。
?
圖 2 ? Regulator
?
文檔窗口中包含的是一條簡單的正則表達 式 [0-9]* ,右下角是測試輸入,左下角則顯示正則表達式的匹配結(jié)果。像這樣在獨立的應(yīng)用程序中編寫和測試正則表達式要比在自己的程 序中作起來容易得多。
?
Regulator 最好的功能之一是能夠搜索 regexlib.com 站點的在線正則表達式 庫。例如,如果在搜索框中輸入字符串“ phone ”,就會找到各種電話號碼的正則表達式匹配結(jié)果。
?
Regulator 由 Roy Osherove 編寫,下載網(wǎng)址: http://royo.is-a-geek.com/regulator 。
?
?
[ 以下內(nèi)容為譯者補充,摘自: http://royo.is-a-geek.com/regulator ]
?
Regulator 主要功能
正則表達式操作 支持
支持三種最通用的正則表達式操作:
- 查找多個匹配
- 按表達式替換文本
- 按表達式拆分文本
文本編輯
句法顯亮 多文檔選項卡界面 “快速添加”功能允許用戶輕松選擇要插入的句法操作 “快速添加”菜單項完全可定制,只需簡單地修改程序目錄中相關(guān)的配置文件 支持括號匹配 使選定的文本“轉(zhuǎn)義”到特定的字符串而無需手工輸入 /s 、 /n 以及其它轉(zhuǎn)義字符 折合和打開選擇:可創(chuàng)建折疊區(qū)域以便于易讀 在編輯器中僅選擇表達式的一部分對其執(zhí)行匹配和替換性能分析
圖形化顯示匹配和替換操作的時間表圖,便于觀察優(yōu)化效果 精確顯示匹配和替換操作用時
? 文本片段工具
簡單易用的常用文本片段工具條,方便表達式鍵入 文本片段工具條完全可定制,任何文本片段均可編輯或刪除,或者可以只添加用戶自己的文本片段 插入的包含“ <> ”符號的文本片段將自動在文本編輯器選中,允許你編寫節(jié)省鍵入時間的范型片段
常用功能
多線程操作: 能取消長時間運 行的表達式匹配和替換 操作 可最小化到系統(tǒng)托盤 “最近打開文件”菜單 其它小功能
?
=====================================================================================
CodeSmith CodeSmith 是一個基于模板的代碼生成工 具,它使用類似于 ASP.NET 的 語法 來生成代碼或文本。 CodeSmith 不像其它許多代碼生成工具,它 不要求你 掌握特殊的應(yīng)用程序設(shè)計或體系結(jié)構(gòu)。利用 CodeSmith 可以生成簡單的強類型集合,也可以生成完整的應(yīng)用程序。 ? 在創(chuàng)建應(yīng)用程序時,無論是編寫數(shù)據(jù)訪問代碼還是創(chuàng)建定制集合,你經(jīng)常會發(fā)現(xiàn)自己在重復(fù) 某些工作。這時候 CodeSmith 就特別有用,因為你可以編寫模 板來自動完成重復(fù)性任務(wù),不但提高了生產(chǎn)力,而且自動完成了煩瑣的任務(wù)。 ? CodeSmith 帶有許多模板,包括所有 .NET 集合類型的模板以及生成存儲過程的模板,但它真正強大的功能在于創(chuàng)建定制模板。下面我就快速介紹一下 創(chuàng)建定制模板。 ?
創(chuàng)建定制模板
CodeSmith 模板是簡單的文本文件,可以用任何文本編輯器創(chuàng)建,只需保存成以 .cst 為擴展名的文件即可。我將要創(chuàng)建的樣例模板接受一個字符串并且創(chuàng)建以該字符串為名的類。首先是添加模 板頭,它聲明了模板語言、目標語言以及模板的簡要描述: <%@ CodeTemplate Language="C#"??
TargetLanguage="C#"
??
Description="Car Template" %>
接下來是聲明模板每次運行時要指定的屬性。我要使用一個字符串類型的屬性,其聲明如下: <%@ Property Name="ClassName" Type="String" Category="Context"
????
Description="Class Name" %>
當模板運行時, ClassName 屬性將出現(xiàn)在 CodeSmith 屬性窗口中。下一步是創(chuàng)建實 際的模板體,非常類似于用 ASP.NET 編寫代碼,如圖 3 所示。 ? 圖 3 定制模板與代碼輸出 ? 可以看到,模板將接受字符串輸 入并產(chǎn)生一個以它為類名的單件類。模板體中使用的開始和結(jié)束定界符標記( <% 和 %> )與 ASP.NET 相同。在這個模板中,我只是簡 單地插入了屬性值,但你可以在定界符標記內(nèi)使用任何類型的 .NET 代碼。一旦模板完成,可以通過 雙擊把它加載到 CodeSmith 中或者從 CodeSmith 應(yīng)用程序打開它,如圖 4 所示。 ? ? 圖 4 打開模板文件 ? 可以看到,左邊的屬性是我在模 板中聲明的。如果輸入“ SingletonClass ”作為類名,然后點擊“ Generate (生成)”按鈕,就會生成如圖 3 底部所示的類。 ? CodeSmith 使用起來比較容易,正確運用會獲得很好的效果。代碼生成應(yīng)用程序 最常用的功能之一是生成數(shù)據(jù)訪問層代碼。 CodeSmith 包括一個專門的程序集叫作 SchemaExplorer ,它可用于生成數(shù)據(jù)表、存儲過程或幾乎任何其它 SQL Server? 對象 模板。 ? CodeSmith 由 Eric J. Smith 編寫,下載網(wǎng)址: http://www.ericjsmith.net/codesmith 。 ?
[ 以下內(nèi)容為譯者補充,摘自: http://www.ericjsmith.net/codesmith ] CodeSmith 概覽 ? CodeSmith 是 一個基于模板的代碼生成器免費軟件 ,它可以生成任何基于ASCII 的編程語言代碼。生成的代碼可以使用屬性進行定制。屬性可以 是任何具有設(shè)計器的 .NET 對象(大多數(shù) .NET 內(nèi)置類型已經(jīng)有設(shè)計器),也可以是一個允許你從結(jié)果中有條件 地添加或移除代碼的簡單的 boolean 屬性,或是一個對象,例如能夠訪問數(shù)據(jù)庫表信息的 TableSchema 對象(包括在 SchemaExplorer 中)。 CodeSmith 完全可擴展,它允許用戶創(chuàng)建定制屬性類型。 CodeSmith 中包括多個定制屬性類型的例子,例如,定制一個允許選擇 XML 文件(使用 XmlSerializer 可將其反序列化到對象中)的屬性類型。 CodeSmith 還允許用戶在模板中引用和調(diào)用指定的外部程序集并且允許從 外部程序集的類生成模板。 ? CodeSmith 的語法與 ASP.NET 幾乎相同。因此如果你熟悉 ASP.NET ,那么應(yīng)該會很快理解模板語法。你可以在模板中使用 C# 、 VB.NET 或 JScript.NET 語言,并且模板可以輸出任何基于 ASCII 的語言。 ? 利用 CodeSmith Explorer 可以查看指定 文件夾中所有的模板,并且可以將模板拖放到任何支持拖放文本的目標。你也可以在 Windows 資源管理器中雙擊執(zhí)行模板文件。 CodeSmith Explorer 窗口還可以嵌 入到 Visual Studio .NET 2003 中作為一個工具窗口,讓你可以方便地訪問自己的模板。 ? ??? ? CodeSmith 有幾種成批生成代碼的方式。 CodeSmith 包括有一個用于 Visual Studio .NET 2003 的定制工具( Custom Tool ),它包括基于多個屬性集的代碼生成模板。這個定制工具允許 CodeSmith 模擬范型,可以通過添加額外的屬性集為一個模板創(chuàng)建多個專 門的模板實例。當定制工具再次運行時,對模板的改變將反映到任何模板的實例中。 CodeSmith 中包括多種優(yōu)化的集合模板(例如 ArrayList 、 DictionaryList 、 Hashtable 、 Idictionary 、 Ilist 、 SortedList 和 Stack ),利用這些模板可以創(chuàng)建避免裝箱和拆箱的強類型集合,它 們的性能要比 .NET Framework 中的集合類型高 1500% 。 CodeSmith 還包括一個基于控制臺的版本,它與定制工具相同,只不過是 從命令行運行并且可以包括在任何編譯和連接過程中。 ? ? CodeSmith 包括一個名為 SchemaExplorer 的程序集,利用它可以訪問幾乎所有的數(shù)據(jù)庫概要( schema )細節(jié)。訪問這種信息讓你能夠生成各種代碼,例如存儲過 程、類型 DataSet 、業(yè)務(wù)對象、表示層代碼或任何其它基于數(shù)據(jù)庫概要信息的代碼。 ? CodeSmith 作為一個免費軟件發(fā)布,其目的在于建立一個強大的用戶和模板社群。我希望最終能使程序員少做一些重 復(fù)性的煩人工作 ! 作為交換,我希望收到反饋建議、錯誤報告、教程、文檔以及一些有用的模板以使我們的生活更加輕松 !
==============================================================================================
NUnit
?
Nunit 是一個為 .NET Framework 建立 的開源單元測試框架。 Nunit 允許在代碼中 編寫測試程序來測試應(yīng)用程序特定的功能。單元測試是一種優(yōu)秀的測試代碼功能性的方法,它也為應(yīng)用程序提供了一種回歸測 試方法。 NUnit 為編寫單元測試提供一個框架并提供圖形化界面運行測試和查看結(jié)果。
?
編寫 Nunit 測試
例如,我想測試 .NET Framework 中 Hashtable 類的功能性以確定兩個對 象是否可以添加到 Hashtable 中并進行檢索。首先,我要添加對 NUnit.Framework 程序集的引用,以便能夠訪問 Nunit Framework 的特性和方法。接下來,創(chuàng)建一個類并以 TestFixture 特性標記。這個特性讓 NUnit 知 道該類包含 NUnit 測試:
?
using System;using System.Collections;
using NUnit.Framework;
?
namespace NUnitExample
{
???
[TestFixture]
???
public class HashtableTest {
???????
public HashtableTest() {
???????????
????????
}
???
}
}
?
再創(chuàng)建一個方法并以 [Test] 特性標記,以便讓 NUnit 知道該方法是一個測試。然后,建立一個 Hashtable 并添加兩個值,最后使用 Assert.AreEqual 方法來查看是否能夠檢索到相同的值添加到了 Hashtable 中,代碼如下所示:
?
[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!");
}
?
以上測試雖然簡單,但能夠展示出 NUnit 的功能。 NUnit 中有許多測試類型和各種 Assert 方法,可用于測試代碼的每個部分。
?
要運行該測試,需要創(chuàng)建一個項目,在 NUnit 中打開已生成的程序集,然后點擊“ Run ”按鈕,運行結(jié)果如圖 5 所示。
?
?
圖 5 ? NUnit 測試運行結(jié)果
?
當看到綠色的狀態(tài)條,我感覺很興奮也 很親切,因為它表明測試通過了。這個簡單的例子展示了 NUnit 的易用性和強大的功能。編寫可以保存并且無論何時改變代碼都 能重新運行的單元測試不僅使得檢測代碼缺陷更為容易,而且讓你能夠交付更好的應(yīng)用程序。
?
NUnit 是一個開源項目,下載網(wǎng)址: http://www.nunit.org/ 。還有一個很好的 NUnit Visual Studio .NET 插件,它能讓你直接從 Visual Studio 運行單元測試。這個插件可以在 http://sourceforge.net/projects/nunitaddin 找到。要了解更多有關(guān) NUnit 的信息以及它在測試驅(qū)動開發(fā)中的應(yīng)用,可閱讀 2004 年 4 月 MSDN? 雜志中的文章《 C# 測試驅(qū)動開發(fā):利用極限編程技術(shù)改進項目設(shè)計和靈活性》。
?
[ 以下內(nèi)容為譯者補充,摘自: http://www.nunit.org/ ] Nunit 包括兩種運行方式:控制臺方式( nunit-console.exe )和圖形用戶界面方式( nunit-gui.exe )。 控制臺方式:以命令行方式運行,可自動將測試結(jié)果保存為 XML 格式,允許產(chǎn)生報告或?qū)Y(jié)果進行處理。該方式對于測試自動 化和集成到其它系統(tǒng)中非常有用。 ? ? 圖形用戶界面方式:該方式為 Windows 窗體應(yīng)用程序,以圖形化界面顯示測試結(jié)果,測試不能運行標 記為黃色圓圈,測試成功標記為綠色圓圈,如果所有測試都失敗則標記為紅色。 ?
====================================================================================================
FxCop
?
.NET Framework 的功能非常強大,這意味著創(chuàng)建優(yōu)秀應(yīng)用程序的潛力巨大,但也同樣存在創(chuàng)建出糟糕程序的機會。 FxCop 是一個幫助你創(chuàng)建更好應(yīng)用程序的工具,它使你能夠檢查程序集并檢驗它對一些不同規(guī)則的遵從性。 FxCop 帶有一套微軟公司創(chuàng)建的規(guī)則,但你也可以創(chuàng)建和包括自己的規(guī)則。例如,如果你決定所有的類都應(yīng)當有一 個缺省的不帶參數(shù)的構(gòu)造器,那你可以寫一條規(guī)則檢查程序集每個類的構(gòu)造器。通過這種方式,不論誰來編寫代碼,都會有確定的一致性。如果你想了解更多有關(guān)創(chuàng) 建定制規(guī)則的信息,可以閱讀 2004 年 6 月 MSDN 雜志的代碼殺手專欄中 John Robbins 有關(guān)這個主題的文章《遇到糟糕代碼? FxCop相 助》( Bugslayer : Bad Code? FxCop to the Rescue )。
?
那么,讓我們利用 FxCop 對前面使用的 NUnitExample 程序集進 行檢查,看看會有什么錯誤。打開 FxCop 后,首先要創(chuàng)建一個 FxCop 項 目,然后加入想要測試的程序集,按下“ Analyze ”按鈕, FxCop 就會執(zhí)行檢查。在 NUnitExample 程序集中發(fā)現(xiàn)的錯誤和警告如圖 6 所示。
?
?
圖 6 ? FxCop 檢查結(jié)果
?
FxCop 發(fā)現(xiàn)了我的程序集存在幾個問題。可以通過雙擊錯誤查看詳細內(nèi)容,包括規(guī)則描述以及在哪里可以找到更 多信息。(你可以用 FxCop 檢查一下 .NET Framework 的程 序集,看看結(jié)果如何。)
?
FxCop 能幫助你創(chuàng)建一致性更好的代碼,但它 不能彌補糟糕的應(yīng)用程序設(shè)計或編程。 FxCop 也不是一個代碼復(fù)查的替代工具,但是它能在代碼復(fù)查之前捕獲大量錯誤,所以你可以將更多時間用在重點問題 上而不是去為命名慣例去操心。
?
FxCop 由微軟公司開發(fā),下載網(wǎng)址: http://www.gotdotnet.com/team/fxcop 。
?
===============================================================================================
.NET Reflector
?
.NET Reflector 是一個類瀏覽器和反編譯器,它能夠檢查程序集并顯示其 所有信息。 .NET Framework 引入了反射的概念,利用反射可以檢查任何基于 .NET 的代碼,無論是單個的類還是完整的程序集。反射還可用于檢索特定程序集中有關(guān)各種類、方法和屬性的 信息。使用 .NET Reflector 可以瀏覽程序集的類和方法,可以檢查這些類和方法生成的微軟中間語言( MSIL ),可以反編譯類和方法,還可以查看等效的 C# 或 Visual Basic? .NET 代碼。
?
為了加以說明,我把前面的 NUnitExample 程序集加載到 .NET Reflector 中進行查看,如圖 7 所示。
?
?
圖 7 利用 .NET Reflecto 查看 NUnitExample 程序集
?
.NET Reflector 帶有 多種工具,你可以進一步檢查這個程序集。如果要查看組成方法的 MSIL ,可以右鍵點擊方法,然后 從彈出菜單選擇“ Disassembler ”。
?
除了查看 MSIL , 你還可以通過選擇工具菜單下的 Decompiler 查看方法的 C# 代碼。也可以通過選擇語言菜單 查看方法反編譯后的 Visual Basic .NET 或 Delphi 代碼。下面就是 NET Reflector 產(chǎn)生 的 C# 代碼:
?
public void HashtableAddTest() { ???? Hashtable hashtable1; ??? 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!"); }?
以上代碼和我編寫的實際代碼非常像,下面是實際代碼:
?
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!"); }?
盡管二者有點差別,但功能性相同。
?
雖然用這個例子展示對比實際代碼與反編譯代碼是個好方法,但 我認為 .NET Reflector 最有用之處是利用它檢查 .NET Framework 程序集和方法。 .NET Framework 提 供很多途徑來執(zhí)行類似的操作。例如,如果要從 XML 讀數(shù)據(jù)集,可以使用 XmlDocument 、 XpathNavigator 或 XmlReader 等各種不同方法。使用 .NET Reflector ,你可以查看 Microsoft 公司怎樣編寫 DataSet 的 ReadXml 方法,或如何從配置文件讀取 數(shù)據(jù)。 .NET Reflector 對于查看 HttpHandler 或 configuration handler 等對象的創(chuàng)建也是一個很好的途徑,因為你可以看看 Microsoft 開發(fā)組在 .NET Framework 中是如何實際構(gòu)建這些對象的。
?
.NET Reflector 由 Lutz Roeder 編寫,下載網(wǎng)址: http://www.aisto.com/roeder/dotnet 。
?
[ 譯注:在新版本 4.0.10.0 中,界面或操作稍有不同 ]
?
==========================================================================================
NDoc
?
編寫代碼文檔一直是一項令人生畏的任務(wù)。這里我并不是指設(shè)計 初期的文檔或更為詳細的設(shè)計文檔,而是指類中方法和屬性的文檔。 NDoc 工具能使用反射檢查程序集 并使用從 C# XML 注釋生成的 XML 文檔自動為你的代碼生成文 檔。目前只有 C# 提供 XML 注釋,但利用 Visual Studio .NET 小 工具VB Commenter 可 以使 Visual Basic .NET 具有 XML 注釋功能。另外, Visual Studio 的下一個發(fā)布版本將對更多的語言支持 XML 注 釋。
?
利用 NDoc ,你很容易在編寫代碼的同時形成文檔(在 XML 注釋中)。要使用 NDoc ,首先要在 Visual Studio.NET 中打開程 序集的 XML 注釋生成功能。右鍵點擊項目,選擇 Properties | Configuration Properties | Build ,然后在“ XML Documentation File ”項中輸入保存 XML 文件的路徑。當項目編譯時,就會創(chuàng)建一個包括所有 XML 注釋的 XML 文件。下面是 NUnit 范例中一個方法的 XML 文檔: /// /// This test adds a number of values to the Hashtable collection /// and then retrieves those values and checks if they match. /// [Test] public void HashtableAddTest() { ??? //Method Body Here } 該方法的 XML 文檔將被抽取并保存到 XML 文件中,如下所示: ? ? This test adds a number of values to the Hashtable collection ??? and then retrieves those values and checks if they match. ?NDoc 利用反射查看程序集,然后 讀取文檔中的 XML 并進行匹配。 NDoc 可使用該數(shù)據(jù)創(chuàng)建各種不 同的文檔格式,包括MSDN 風(fēng)格的 HTML 幫助文件格式( .chm )、 Visual Studio .NET 幫助 文件格式( HTML Help 2 )等 。生成 XML 文件之后,下一步是將程序集和 XML 文 件加載到 NDoc 中以便進行處理。操作很簡單,只需打開 NDoc 并 點擊“ Add ”按鈕,然后添加相關(guān)文件即可。
?
一旦程序集和 XML 文 件載入 NDoc 中并根據(jù)屬性范圍定制輸出后,點擊“ Generate ”按鈕就開始生成文檔。使用默認屬性, NDoc 會生成一些非常有用的 .html 和 .chm 文件,因而以快速和有效的方式自動 完成了煩人的任務(wù)。
?
NDoc 是一個開源項目,下載網(wǎng)址: http://NDoc.sourceforge.net/ 。===================================================================================================
NAnt
?
NAnt 不 像目前版本的 Visual Studio .NET ,它是一個基于 .NET 的編譯( Build )工具,能夠使項目的編譯過程非常容易。當項目開發(fā)者很多時,不可能依靠某個人去執(zhí)行編譯過程,你也 不想經(jīng)常去手工編譯項目,而是代之以創(chuàng)建一個每天晚上自動運行的編譯過程。 NAnt 允許你執(zhí)行編譯解決方案、復(fù)制文件、運行 NUnit 測試、發(fā)送 e-mail 等工作。遺憾的是, Nant 沒有漂亮的圖形化界面,但它包括一個控制臺應(yīng)用程序和 XML 文件, XML 文件指定了編譯過程中應(yīng)當完成的任務(wù)。注意 Visual Studio 2005 新的編譯平 臺 MSBuild ,它提 供非常穩(wěn)健的編譯功能并且同樣是由基于 XML 的項目文件驅(qū)動的。
?
使用 NAnt
在這個例子中,我將為前面創(chuàng)建的 NUnitExample 解決方案創(chuàng)建一個 NAnt 編譯文件。首先創(chuàng)建一個以 .build 為擴展名的 XML 文件,將它置于項目的根目錄下,然后在文件 頂部添加一個 XML 聲 明。第一個添加的標記是項目標記:
?
??? The NUnit Example Project?
項目標記設(shè)置了項目名稱、缺省目標和基目錄。描述標記設(shè)置了該項目的簡要描述。
?
接下來是添加屬性標記,用于存儲可從 文件任何地方訪問的設(shè)置值。在本例中,我要創(chuàng)建一個名為 debug 的屬性,它可以設(shè)置為 true 或 false ,用于決定項目是否在調(diào)試時被編譯(這個特殊的屬性最后實 際上不影響項目的編譯,它是你設(shè)置的一個簡單變量,可以在實際決定如何編譯項目后讀取。)屬性標記如下:
?
?
然后,創(chuàng)建一個目標標記。一個項目可以包含多個標記,它們在 NAnt 運行時指定。如果沒有指定目標,則使用項目元素中缺省的設(shè)置 值。在本例中,缺省目標是“ build ”。讓我們看一看目標元素,它包含大部分編譯信息:
?
?
在目標元素中,我設(shè)置了要編譯的目標名并創(chuàng)建一個任務(wù)描述。 下面還要創(chuàng)建一個 csc 元素,它指定應(yīng)當傳遞給 C# 編譯器 csc 的內(nèi)容。讓我們看一看 csc 元素:
?
???? debug="${debug}"> ??? ??? ?????? ????
首先,必 須設(shè)置 csc 元素的目標。在本例中我將創(chuàng)建一個 .dll 文 件,因此我將目標設(shè)置為“ library ”。接下來設(shè)置 csc 元 素的輸出,它指定 .dll 文件的創(chuàng)建位置。最后,需要設(shè)置 debug 屬 性,它決定項目是否在調(diào)試時被編譯。因為前面已經(jīng)創(chuàng)建了一個屬性來存儲這個值,所以可以使用下列字符串來訪問該屬性的值: ${debug} 。 csc 元素還包含一些子元素,這里需要創(chuàng)建 兩個元素:引用元素告知 NAnt 需要為這個項目引用的程序集,源文件元素告訴 NAnt 編 譯所包括的文件。在本例中,我引用 NUnit.Framework.dll 程序集并包括 HashtableTest.cs 文 件。最終的編譯文件見圖 8 。(正常情況下你還應(yīng)當創(chuàng)建一個用于刪除生成的文件的 clean 目標,但我為了文章簡短而省略了。)
?
?
圖 8 ? NAnt 編譯文件
?
要編譯這個文件,需要在 .build 文件所在的項目根目錄下執(zhí)行 NAnt.exe 。如果編譯成功,應(yīng)用程序的 bin 目錄下可以找到 .dll 和 .pdb 文件。盡管使用 NAnt 確實不如在 Visual Studio 中點擊“ Build ”那么容易,但對于開發(fā) 按進度自動運行的編譯過程,它是一個功能非常強大的工具。 NAnt 還包括一些有用的功能,例如,運行 單元測試或復(fù)制其它文件(目前的 Visual Studio 編譯過程不支持這些功能)。
?
NAnt 是一個開源項目,下載網(wǎng)址: http://NAnt.sourceforge.net/ 。
?
?
=========================================================================================================
版 本切換和轉(zhuǎn)換工具
?
在這一部分,我將介紹兩個版本切換和轉(zhuǎn)換工具,它們雖然簡 單,但極為有用。第一個工具是 ASP.NET Version Switcher ,它可以切換虛擬目錄運行下的 ASP.NET 版本。第二個工具是 Visual Studio Converter ,它可以將項目文件在 Visual Studio .NET 2002 和 Visual Studio .NET 2003 之 間轉(zhuǎn)換。
?
當 IIS 處理請求時,先查看被請求文件的擴展名,然后基于 Web 站點或虛擬目錄的擴展名映射,或者將請求委托給 ISAPI 擴展處理,或者由自己處理。這就是 ASP.NET 的工作原理,擴展名映射注冊了所 有的 ASP.NET 擴展 名并將它們指引到 aspnet_isapi.dll 。這不會有什么問題,但如果你安裝了 ASP.NET 1.1 ,會將擴展名映射升級到新版本的 aspnet_isapi.dll ,當建立在 ASP.NET 1.0 上的應(yīng)用程序試圖運行在 版本 1.1 時,就會引起 錯誤。為了修正這個問題,你可以將所有擴展名映射切換回 1.0 版本的 aspnet_isapi.dll ,但手工切換 18 個擴展名映射可不是一件有趣的事。這時, ASP.NET Version Switcher 就有了用武之地。它可以切換任何單個 ASP.NET 應(yīng)用程序使用的 .NET Framework 版本。
?
ASP.NET Version Switcher 如圖 9 所示。使用時,只需簡單地選擇應(yīng)用程序,然后選擇應(yīng)用程序想要使用的 .NET Framework 版本。按下切換按鈕, 它就會使用 aspnet_regiis.exe 命令行工具將應(yīng)用程序切換到所選擇的 .NET Framework 版本。當 ASP.NET 和 .NET Framework 未來版本發(fā)布后,這個 工具會更為有用。
?
?
圖 9 ? ASP.NET Version Switcher
?
ASP.NET Version Switcher 由 Denis Bauer 編寫,下載網(wǎng)址: http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx 。
?
Visual Studio .NET Project Converter (見圖 10 )非常類似于 ASP.NET Version Switcher , 它用于轉(zhuǎn)換 Visual Studio 項目文件的版本。盡管 .NET Framework 版本 1.0 和 1.1 僅小有不同,但項目文件一旦從 Visual Studio .NET 2002 轉(zhuǎn)換到 Visual Studio .NET 2003 , 就再轉(zhuǎn)換不回來了。雖然大多數(shù)情況下這可能不是一個問題(因為 .NET Framework 版本 1.0 和 1.1 之間沒有大的變化),但有時候你可能需要將項目轉(zhuǎn)換回來。這個轉(zhuǎn)換器可以將任何解決方案或項目文件從 Visual Studio 7.1 ( Visual Studio .NET 2003 ) 轉(zhuǎn)換到 Visual Studio 7.0 ( Visual Studio .NET 2002 ),如果需要還可以轉(zhuǎn)換回來。
?
?
圖 10 ? Visual Studio .NET Project Converter
?
Visual Studio .NET Project Converter 由 Dacris Software 公司編寫,下載網(wǎng) 址: http://www.codeproject.com/macro/vsconvert.asp 。
?
[ 譯注:該工具目前提供 2.0 版本,但使用過程中存在問題。 另,作者提供源代碼,可供修改、學(xué)習(xí)和參考。 ]
結(jié)語
?
對這些工具走馬觀花的介紹結(jié)束了,但我已經(jīng)盡力展現(xiàn)了足夠的 信息以激發(fā)你的興趣。我相信這篇文章讓你了解了一些可以立即開始使用以寫出更好項目的免費工具。我也力促你確保擁有其它合適的工具,無論是最新版本的 Visual Studio ,一臺功能強大的計算 機,還是一個免費工具。擁有合適工具,一切都將不同。
?
--------------------------------------------------------------------------------
[ 作者簡介 ] James Avery, .NET 與 Microsoft 技術(shù)顧問,出版過多部書籍并 發(fā)表過很多文章,最新著作為《 ASP.NET Setup and Configuration Pocket Reference 》( Microsoft 出版社, 2003 )。 e-mail : javery@infozerk.com , weblog : http://www.dotavery.com/blog 。
轉(zhuǎn)載于:https://www.cnblogs.com/yefengmeander/archive/2011/01/21/2887751.html
總結(jié)
以上是生活随笔為你收集整理的十个必备的.NET开发小工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源博客项目eblog完整搭建教程!
- 下一篇: .NET 开源项目概览