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