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

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

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

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

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

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

本文使用了以下技术:

.NET,C#,VisualBasic.NET,VisualStudio.NET

  除非你使用可获得的最好的工具,否则别指望能生成一流的应用程序。

除了VisualStudio.NET这种大型工具以外,你从.NET社区还可以获得许多小型的、不太为人所知的工具。

我在本文中将向你介绍几个目前可以获得的、面向.NET开发的最好的免费工具。

我将引领你完成一个有关如何使用每种工具的快速教程——有些工具在许多场合可以节约你的时间,而另一些工具则可能完全改变你编写代码的方式。

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

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的用武之地。

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

Figure1SnippetCompiler运行画面

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

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

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

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

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

SnippetCompiler由JeffKey编写,下载地址是:

Regulator

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

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

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

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

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

  Regulator允许你输入一个正则表达式以及一些针对其运行该表达式的输入。

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

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

Figure2Regulator运行画面

  文档中包含该正则表达式——在该示例中,它是[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进行编码。

你可以在Figure3中查看该模板的主体。

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

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

]

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

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

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

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

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

Figure4CodeSmith模版

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

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

  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按钮。

Figure5显示了结果。

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

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

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

Figure5NUnit

  NUnit是一个开放源代码项目,下载地址是:

http:

//www.nunit.org/。

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

你可以在找到它。

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

“Test-DrivenC#:

ImprovetheDesignandFlexibilityofYourProjectwithExtremeProgrammingTechniques”

FxCop

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

FxCop是有助于创建更好的应用程序的工具之一,通过分析程序集,并使用许多不同的规则来检查它是否符合这些规则。

FxCop随附了由Microsoft创建的一组规则,你也可以创建并包括你自己的规则。

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

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

如果你需要有关创建自定义规则的详细信息,参见JohnRobbins有关这方面的Bugslayer专栏文章。

  那么,让我们看看实际运行的FxCop,并且留心一下它在我正在开发的NUnitExample程序集中找到什么错误。

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

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

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

Figure6FxCop运行画面

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

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

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

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

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

FxCop由Microsoft开发,下载地址是:

LutzRoeder的.NETReflector

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

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

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

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

.NET中的等价类和方法。

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

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

Figure7NUnitExample程序集

  在.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版本文件。

首先,我需要创建一个具有.build扩展名的XML文件,将其放在我的项目的根目录中,然后向该文件的顶部添加一个XML声明。

我需要添加到该文件的第一个标记是project标记:

xmlversion="1.0"?

>

TheNUnitExampleProject

  项目标记还用于设置项目名称、默认目标以及基目录。

Description标记用于设置该项目的简短说明。

  接着,我将添加property标记,该标记可用于将设置存储到单个位置(随后可以从文件中的任意位置访问该位置)。

在该例中,我将创建一个名为debug的属性,我可以随后将其设置为true或false,以反映我是

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

当前位置:首页 > 医药卫生 > 基础医学

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

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