每个开发人员现在应该下载的十种必备工具.docx

上传人:b****8 文档编号:9826100 上传时间:2023-05-21 格式:DOCX 页数:18 大小:124.25KB
下载 相关 举报
每个开发人员现在应该下载的十种必备工具.docx_第1页
第1页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第2页
第2页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第3页
第3页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第4页
第4页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第5页
第5页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第6页
第6页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第7页
第7页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第8页
第8页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第9页
第9页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第10页
第10页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第11页
第11页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第12页
第12页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第13页
第13页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第14页
第14页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第15页
第15页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第16页
第16页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第17页
第17页 / 共18页
每个开发人员现在应该下载的十种必备工具.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

每个开发人员现在应该下载的十种必备工具.docx

《每个开发人员现在应该下载的十种必备工具.docx》由会员分享,可在线阅读,更多相关《每个开发人员现在应该下载的十种必备工具.docx(18页珍藏版)》请在冰点文库上搜索。

每个开发人员现在应该下载的十种必备工具.docx

每个开发人员现在应该下载的十种必备工具

每个开发人员现在应该下载的十种必备工具

发布日期:

7/20/2004|更新日期:

7/20/2004

本文自发布以来已经增加了新信息。

请参阅下面的编辑更新。

本文讨论:

用于编写单元测试的NUnit

用于创建代码文档资料的NDoc

用于生成解决方案的NAnt

用于生成代码的CodeSmith

用于监视代码的FxCop

用于编译少量代码的SnippetCompiler

两种不同的转换器工具:

ASP.NET版本转换器和VisualStudio.NET项目转换器

用于生成正则表达式的Regulator

用于分析程序集的.NETReflector

本文使用了下列技术:

.NET、C#或VisualBasic.NET、VisualStudio.NET

除非您使用能够获得的最佳工具,否则您无法期望生成一流的应用程序。

除了像VisualStudio®.NET这样的著名工具以外,还可以从.NET社区获得许多小型的、不太为人所知的工具。

在本文中,我将向您介绍一些目前可以获得的、面向.NET开发的最佳免费工具。

我将引导您完成一个有关如何使用其中每种工具的快速教程—一些工具在许多时候可以使您节约一分钟,而另一些工具则可能彻底改变您编写代码的方式。

因为我要在本篇文章中介绍如此之多的不同工具,所以我无法详尽讨论其中每种工具,但您应该了解到有关每种工具的足够信息,以便判断哪些工具对您的项目有用。

本页内容

SnippetCompiler

Regulator

CodeSmith

生成自定义模板

NUnit

编写NUnit测试

FxCop

LutzRoeder的.NETReflector

NDoc

NAnt

实际运行的NAnt

转换工具

小结

SnippetCompiler

SnippetCompiler是一个基于Windows®的小型应用程序,您可以通过它来编写、编译和运行代码。

如果您具有较小的代码段,并且您不希望为其创建完整的VisualStudio.NET项目(以及伴随该项目的所有文件),则该工具将很有用。

例如,假设我希望向您说明如何从Microsoft?

.NET框架中启动另一个应用程序。

在SnippetCompiler中,我将通过新建一个能够创建小型控制台应用程序的文件开始。

可以在该控制台应用程序的Main方法内部创建代码片段,而这正是我要在这里做的事情。

下面的代码片段演示了如何从.NET框架中创建记事本实例:

System.Diagnostics.Processproc=newSystem.Diagnostics.Process();

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

proc.Start();

proc.WaitForExit();

当然该代码片段本身无法编译,而这正是SnippetCompiler的用武之地。

图1显示了SnippetCompiler中的这一代码示例。

图1SnippetCompiler

要测试该代码片段,只须按play(运行)按钮(绿色三角形),它就会在调试模式下运行。

该代码片段将生成一个弹出式控制台应用程序,并且将显示记事本。

当您关闭记事本时,该控制台应用程序也将关闭。

就我个人而言,我是在尝试为某位向我求助的人士创建一个小型示例时,才发现SnippetCompiler是如此宝贵的—如果不使用该工具,则我通常必须新建一个项目,确保每个部分都能编译通过,然后将代码片段发送给求助者,并删除该项目。

SnippetCompiler使得这一过程变得更加容易、更加愉快。

SnippetCompiler由JeffKey编写,并且可以从下载。

返回页首

Regulator

Regulator是最后一个添加到我的头等工具清单中的。

它是一种很有特色的工具,能够使生成和测试正则表达式变得很容易。

人们对正则表达式重新产生了兴趣,因为它们在.NET框架中受到很好的支持。

正则表达式用来基于字符、频率和字符顺序定义字符串中的模式。

它们最常见的用途是作为验证用户输入有效性的手段或者作为在较大字符串中查找字符串的方法—例如,在Web页上查找URL或电子邮件地址。

Regulator使您可以输入一个正则表达式以及一些针对其运行该表达式的输入内容。

这样,在应用程序中实现该正则表达式之前,您可以了解它将产生什么效果以及它将返回哪些种类的匹配项。

图2显示了带有简单正则表达式的Regulator。

文档中包含该正则表达式—在该示例中,它是[0-9]*,应该匹配一行中任意数量的数字。

右下侧的框中含有针对该正则表达式的输入,而左下侧的框显示了该正则表达式在输入内容中找到的匹配项。

在这样的单独应用程序中编写和测试正则表达式,要比尝试在您的应用程序中处理它们容易得多。

Regulator中的最佳功能之一是能够在搜索联机正则表达式库。

例如,如果您在搜索框中输入字符串“phone”,您将找到20种以上能够匹配各种电话号码的不同的正则表达式,包括用于英国、澳大利亚的表达式以及其他许多电话号码。

Regulator由RoyOsherove编写,并且可以在http:

//royo.is-a-下载。

返回页首

CodeSmith

CodeSmith是一种基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成任意类型的代码或文本。

与其他许多代码生成工具不同,CodeSmith不要求您订阅特定的应用程序设计或体系结构。

使用CodeSmith,可以生成包括简单的强类型集合和完整应用程序在内的任何东西。

当您生成应用程序时,您经常需要重复完成某些特定的任务,例如编写数据访问代码或者生成自定义集合。

CodeSmith在这些时候特别有用,因为您可以编写模板自动完成这些任务,从而不仅提高您的工作效率,而且能够自动完成那些最为乏味的任务。

CodeSmith附带了许多模板,包括对应于所有.NET集合类型的模板以及用于生成存储过程的模板,但该工具的真正威力在于能够创建自定义模板。

为了使您能够入门,我将快速介绍一下如何生成自定义模板。

返回页首

生成自定义模板

CodeSmith模板只是一些可以在任意文本编辑器中创建的文本文件。

它们的唯一要求是用.cst文件扩展名来保存它们。

我将要生成的示例模板将接受一个字符串,然后基于该字符串生成一个类。

创建模板的第一步是添加模板头,它可声明模板的语言、目标语言以及简要模板说明:

<%@CodeTemplateLanguage="C#"

TargetLanguage="C#"

Description="CarTemplate"%>

模板的下一部分是属性声明,在这里可声明将在模板每次运行时指定的属性。

就该模板而言,我要使用的唯一属性只是一个字符串,因此属性声明如下所示:

<%@PropertyName="ClassName"Type="String"Category="Context"

Description="ClassName"%>

该属性声明将使ClassName属性出现在CodeSmith属性窗口中,以便可以在模板运行时指定它。

下一步是实际生成模板主体,它非常类似于用ASP.NET进行编码。

您可以在图3中查看该模板的主体。

[编辑更新—6/16/2004:

图3中的代码已被更新,以便对多线程操作保持安全。

]

正如您所见,该模板接受字符串输入并使用该类名生成单独的类。

在模板主体中,使用与ASP.NET中相同的起始和结束标记。

在该模板中,我只是插入属性值,但您还可以在这些标记内部使用任意类型的.NET代码。

在该模板完成之后,您就可以通过双击它或者从CodeSmith应用程序中打开它将其加载到CodeSmith中。

图4显示了已经加载到CodeSmith中的该模板。

您可以看到左侧的属性正是我在该模板中声明的属性。

如果我输入“SingletonClass”作为类名,并单击Generate按钮,则将生成图3的底部显示的类。

CodeSmith使用起来相当容易,如果能够正确应用,则可以产生一些令人难以置信的结果。

面向代码生成的应用程序中最常见的部分之一是数据访问层。

CodeSmith包括一个名为SchemaExplorer的特殊的程序集,可用来从表、存储过程或几乎任何其他SQLServer?

对象生成模板。

CodeSmith由EricJ.Smith编写,并且可以在下载。

返回页首

NUnit

NUnit是为.NET框架生成的开放源代码单元测试框架。

NUnit使您可以用您喜欢的语言编写测试,从而测试应用程序的特定功能。

当您首次编写代码时,单元测试是一种测试代码功能的很好方法,它还提供了一种对应用程序进行回归测试的方法。

NUnit应用程序提供了一个用于编写单元测试的框架,以及一个运行这些测试和查看结果的图形界面。

返回页首

编写NUnit测试

作为示例,我将测试.NET框架中Hashtable类的功能,以确定是否可以添加两个对象并且随后检索这些对象。

我的第一步是添加对NUnit.Framework程序集的引用,该程序集将赋予我对NUnit框架的属性和方法的访问权。

接下来,我将创建一个类并用TestFixture属性标记它。

该属性使NUnit可以知道该类包含NUnit测试:

usingSystem;

usingSystem.Collections;

usingNUnit.Framework;

namespaceNUnitExample

{

[TestFixture]

publicclassHashtableTest{

publicHashtableTest(){

}

}

}

下一步,我将创建一个方法并用[Test]属性标记它,以便NUnit知道该方法是一个测试。

然后,我将建立一个Hashtable并向其添加两个值,再使用Assert.AreEqual方法查看我是否可以检索到与我添加到Hashtable的值相同的值,如下面的代码所示:

[Test]

publicvoidHashtableAddTest()

{

Hashtableht=newHashtable();

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

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

Assert.AreEqual("Value1",ht["Key1"],"Wrongobjectreturned!

");

Assert.AreEqual("Value2",ht["Key2"],"Wrongobjectreturned!

");

}

这将确认我可以首先向Hashtable中添加值并随后检索相应的值—这是一个很简单的测试,但能够表现NUnit的功能。

存在许多测试类型以及各种Assert方法,可使用它们来测试代码的每个部分。

要运行该测试,我需要生成项目,在NUnit应用程序中打开生成的程序集,然后单击Run按钮。

图5显示了结果。

当我看到那个大的绿色条纹时,我有一种兴奋和头晕的感觉,因为它让我知道测试已经通过了。

这个简单的示例表明NUnit和单元测试是多么方便和强大。

由于能够编写可以保存的单元测试,并且每当您更改代码时都可以重新运行该单元测试,您不仅可以更容易地检测到代码中的缺陷,而且最终能够交付更好的应用程序。

图5NUnit

NUnit是一个开放源代码项目,并且可以从http:

//www.nunit.org下载。

还有一个优秀的NUnitVisualStudio.NET外接程序,它使您可以直接从VisualStudio中运行单元测试。

您可以在找到它。

有关NUnit及其在测试驱动开发中的地位的详细信息,请参阅文章“Test-DrivenC#:

ImprovetheDesignandFlexibilityofYourProjectwithExtremeProgrammingTechniques”(MSDN®Magazine2004年4月刊)。

返回页首

FxCop

.NET框架非常强大,这意味着存在创建优秀应用程序的极大可能,但是也同样存在创建劣质程序的可能。

FxCop是有助于创建更好的应用程序的工具之一,它所采用的方法是:

使您能够分析程序集,并使用一些不同的规则来检查它是否符合这些规则。

FxCop随附了由Microsoft创建的固定数量的规则,但您也可以创建并包括您自己的规则。

例如,如果您决定所有的类都应该具有一个不带任何参数的默认构造函数,则可以编写一条规则,以确保程序集的每个类上都具有一个构造函数。

这样,无论是谁编写该代码,您都将获得一定程度的一致性。

如果您需要有关创建自定义规则的详细信息,请参阅JohnRobbins的有关该主题的Bugslayer专栏文章(MSDN®Magazine2004年6月刊)。

那么,让我们观察一下实际运行的FxCop,并且看一下它在我一直在处理的NUnitExample程序集中找到哪些错误。

当您打开FxCop时,您首先需要创建一个FxCop项目,然后向其添加您要测试的程序集。

在将该程序集添加到项目以后,就可以按Analyze,FxCop将分析该程序集。

图6中显示了在该程序集中找到的错误和警告。

FxCop在我的程序集中找到了几个问题。

您可以双击某个错误以查看详细信息,包括规则说明以及在哪里可以找到更多信息。

(您可以做的一件有趣的事情是在框架程序集上运行FxCop并查看发生了什么事情。

FxCop可以帮助您创建更好的、更一致的代码,但它无法补偿低劣的应用程序设计或非常简单拙劣的编程。

FxCop也不能替代对等代码检查,但是因为它可以在进行代码检查之前捕获大量错误,所以您可以花费更多时间来解决严重的问题,而不必担心命名约定。

FxCop由Microsoft开发,并且可以从下载。

返回页首

LutzRoeder的.NETReflector

下一个必不可少的工具称为.NETReflector,它是一个类浏览器和反编译器,可以分析程序集并向您展示它的所有秘密。

.NET框架向全世界引入了可用来分析任何基于.NET的代码(无论它是单个类还是完整的程序集)的反射概念。

反射还可以用来检索有关特定程序集中包含的各种类、方法和属性的信息。

使用.NETReflector,您可以浏览程序集的类和方法,可以分析由这些类和方法生成的Microsoft中间语言(MSIL),并且可以反编译这些类和方法并查看C#或VisualBasic®.NET中的等价类和方法。

为了演示.NETReflector的工作方式,我将加载和分析前面已经显示的NUnitExample程序集。

图7显示了.NETReflector中加载的该程序集。

图7NUnitExample程序集

在.NETReflector内部,有各种可用来进一步分析该程序集的工具。

要查看构成某个方法的MSIL,请单击该方法并从菜单中选择Disassembler。

除了能够查看MSIL以外,您还可以通过选择Tools菜单下的Decompiler来查看该方法的C#形式。

通过在Languages菜单下更改您的选择,您还可以查看该方法被反编译到VisualBasic.NET或Delphi以后的形式。

以下为.NETReflector生成的代码:

publicvoidHashtableAddTest()

{

Hashtablehashtable1;

hashtable1=newHashtable();

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

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

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

"Wrongobjectreturned!

");

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

"Wrongobjectreturned!

");

}

前面的代码看起来非常像我为该方法实际编写的代码。

以下为该程序集中的实际代码:

publicvoidHashtableAddTest()

{

Hashtableht=newHashtable();

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

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

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

"Wrongobjectreturned!

");

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

"Wrongobjectreturned!

");

}

尽管上述代码中存在一些小的差异,但它们在功能上是完全相同的。

虽然该示例是一种显示实际代码与反编译代码之间对比的好方法,但在我看来,它并不代表.NETReflector所具有的最佳用途—分析.NET框架程序集和方法。

.NET框架提供了许多执行类似操作的不同方法。

例如,如果您需要从XML中读取一组数据,则存在多种使用XmlDocument、XPathNavigator或XmlReader完成该工作的不同方法。

通过使用.NETReflector,您可以查看Microsoft在编写数据集的ReadXml方法时使用了什么,或者查看他们在从配置文件读取数据时做了哪些工作。

.NETReflector还是一个了解以下最佳实施策略的优秀方法:

创建诸如HttpHandlers或配置处理程序之类的对象,因为您可以了解到Microsoft工作组实际上是如何在框架中生成这些对象的。

.NETReflector由LutzRoeder编写,并且可以从下载。

返回页首

NDoc

编写代码文档资料几乎总是一项令人畏惧的任务。

我所说的不是早期设计文档,甚至也不是更为详细的设计文档;我说的是记录类上的各个方法和属性。

NDoc工具能够使用反射来分析程序集,并使用从C#XML注释生成的XML自动为代码生成文档资料。

XML注释仅适用于C#,但有一个名为VBCommenter的VisualStudio.NETPowerToy,它能够为VisualBasic.NET完成类似的工作。

此外,下一版本的VisualStudio将为更多语言支持XML注释。

使用NDoc时,您仍然在编写代码的技术文档,但您是在编写代码的过程中完成了文档编写工作(在XML注释中),而这更容易忍受。

使用NDoc时,第一步是为您的程序集打开XML注释生成功能。

右键单击该项目并选择Properties|ConfigurationProperties|Build,然后在XMLDocumentationFile选项中输入用于保存XML文件的路径。

当该项目生成时,将创建一个XML文件,其中包含所有XML注释。

下面是NUnit示例中的一个用XML编写了文档的方法:

///

///ThistestaddsanumberofvaluestotheHashtablecollection

///andthenretrievesthosevaluesandchecksiftheymatch.

///

[Test]

publicvoidHashtableAddTest()

{

//MethodBodyHere

}

有关该方法的XML文档资料将被提取并保存在XML文件中,如下所示:

NUnitExample.HashtableTest.HashtableAddTest">

ThistestaddsanumberofvaluestotheHashtablecollection

andthenretrievesthosevaluesandchecksiftheymatch.

NDoc使用反射来考察您的程序集,然后读取该文档中的XML,并且将它们进行匹配。

NDoc使用该数据来创建任意数量的不同文档格式,包括HTML帮助文件(CHM)。

在生成XML文件以后,下一步是将程序集和XML文件加载到NDoc中,以便可以对它们进行处理。

通过打开NDoc并单击Add按钮,可以容易地完成该工作。

在将程序集和XML文件加载到NDoc中并且使用可用的属性范围自定义输出以后,单击Generate按钮将启动生成文档资料的过程。

使用默认的属性,NDoc可以生成一些非常吸引人并且实用的.html和.chm文件,从而以快速有效的方式自动完成原来非常乏味的任务。

NDoc是一个开放源代码项目,并且可以从下载。

返回页首

NAnt

NAnt是一个基于.NET的生成工具,与当前版本的VisualStudio.NET不同,它使得为您的项目创建生成过程变得非常容易。

当您拥有大量从事单个项目的开发人员时,您不能依赖于从单个用户的座位进行生成。

您也不希望必须定期手动生成该项目。

您更愿意创建每天晚上运行的自动生成过程。

NAnt使您可以生成解决方案、复制文件、运行NUnit测试、发送电子邮件,等等。

遗憾的是,NAnt缺少漂亮的图形界面,但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和XML文件。

注意,MSBuild(属于VisualStudio2005的新的生成平台)为每种健壮的生成方案进行了准备,并且由基于XML的项目文件以类似的方式驱动。

返回页首

实际运行的NAnt

在该示例中,我将为前面创建的NUnitExample解决方案创建一个NAnt版本文件。

首先,我需要创建一个具有.bui

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2