Angelo Lee's Blog
This is my kingdom .If i don't fight for it ,who will ?

 

本文将介绍下列工具:

 

·   代码片段编译工具: 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 主要功能

正则表达式操作 支持

支持三种最通用的正则表达式操作:

  • 查找多个匹配
  • 按表达式替换文本
  • 按表达式拆分文本
Regexlib.com 集成
  • RegexLib.com 数据库搜索和导入表达式及示
  • 使用图形化 向导将用户自己的正则表达式提交到 RegexLib.com 数据库
  • 支持代理服务器

文本编辑

  • 句法显亮
  • 多文档选项卡界面
  • “快速添加”功能允许用户轻松选择要插入的句法操作
  • “快速添加”菜单项完全可定制,只需简单地修改程序目录中相关的配置文件
  • 支持括号匹配
  • 使选定的文本“转义”到特定的字符串而无需手工输入 /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

posted on 2011-01-21 13:23  Angelo Lee  阅读(412)  评论(0编辑  收藏  举报