·用于编写单元测试的 NUnit
·用于创建代码文档资料的 NDoc
·用于生成解决方案的 NAnt
·用于生成代码的 CodeSmith
·用于监视代码的 FxCop
·用于编译少量代码的 Snippet Compiler
·两种不同的转换器工具:ASP.NET 版本转换器和 Visual Studio .NET 项目转换器
·用于生成正则表达式的 Regulator
·用于分析程序集的 .NET Reflector

本文使用了下列技术:

.NET、C# 或 Visual Basic .NET、Visual Studio .NET

 除非您使用能够获得的最佳工具,否则您无法期望生成一流的应用程序。除了像 Visual Studio®.NET 这样的著名工具以外,还可以从 .NET 社区获得许多小型的、不太为人所知的工具。在本文中,我将向您介绍一些目前可以获得的、面向 .NET 开发的最佳免费工具。我将引导您完成一个有关如何使用其中每种工具的快速教程 — 一些工具在许多时候可以使您节约一分钟,而另一些工具则可能彻底改变您编写代码的方式。因为我要在本篇文章中介绍如此之多的不同工具,所以我无法详尽讨论其中每种工具,但您应该了解到有关每种工具的足够信息,以便判断哪些工具对您的项目有用。

Snippet Compiler

 Snippet Compiler 是一个基于 Windows® 的小型应用程序,您可以通过它来编写、编译和运行代码。如果您具有较小的代码段,并且您不希望为其创建完整的 Visual Studio .NET 项目(以及伴随该项目的所有文件),则该工具将很有用。

 例如,假设我希望向您说明如何从 Microsoft?.NET 框架中启动另一个应用程序。在 Snippet Compiler 中,我将通过新建一个能够创建小型控制台应用程序的文件开始。可以在该控制台应用程序的 Main 方法内部创建代码片段,而这正是我要在这里做的事情。下面的代码片段演示了如何从 .NET 框架中创建记事本实例:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName= "notepad.exe";
proc.Start();
proc.WaitForExit();

 当然该代码片段本身无法编译,而这正是 Snippet Compiler 的用武之地。图 1 显示了 Snippet Compiler 中的这一代码示例。

图 1 Snippet Compiler

 要测试该代码片段,只须按 play(运行)按钮(绿色三角形),它就会在调试模式下运行。该代码片段将生成一个弹出式控制台应用程序,并且将显示记事本。当您关闭记事本时,该控制台应用程序也将关闭。

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

 Snippet Compiler 由 Jeff Key 编写,并且可以从 http://www.sliver.comhttp://dotnet.chinaitlab.com/SnippetCompiler 下载。

Regulator

 Regulator 是最后一个添加到我的头等工具清单中的。它是一种很有特色的工具,能够使生成和测试正则表达式变得很容易。人们对正则表达式重新产生了兴趣,因为它们在 .NET 框架中受到很好的支持。正则表达式用来基于字符、频率和字符顺序定义字符串中的模式。它们最常见的用途是作为验证用户输入有效性的手段或者作为在较大字符串中查找字符串的方法 — 例如,在 Web 页上查找 URL 或电子邮件地址。

 Regulator 使您可以输入一个正则表达式以及一些针对其运行该表达式的输入内容。这样,在应用程序中实现该正则表达式之前,您可以了解它将产生什么效果以及它将返回哪些种类的匹配项。图 2 显示了带有简单正则表达式的 Regulator。

图 2

 文档中包含该正则表达式 — 在该示例中,它是 [0-9]*,应该匹配一行中任意数量的数字。右下侧的框中含有针对该正则表达式的输入,而左下侧的框显示了该正则表达式在输入内容中找到的匹配项。在这样的单独应用程序中编写和测试正则表达式,要比尝试在您的应用程序中处理它们容易得多。

 Regulator 中的最佳功能之一是能够在 regexlib.com 搜索联机正则表达式库。例如,如果您在搜索框中输入字符串“phone”,您将找到 20 种以上能够匹配各种电话号码的不同的正则表达式,包括用于英国、澳大利亚的表达式以及其他许多电话号码。Regulator 由 Roy Osherove 编写,并且可以在 http://royo.is-a-geek.com/regulator 下载。

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 进行编码。以下是该模板的主体:

Custom Template

public sealed class <%= ClassName %>
{
private static volatile <%= ClassName %> _instance;
private <%= ClassName %>() {}
private static readonly object _syncRoot = new object();
public static <%= ClassName %> Value
{
get
{
if (_instance == null)
{
lock(_syncRoot)
{
if (_instance == null)
{
_instance = new <%= ClassName %>();
}
}
}
return _instance;
}
}
}

SingletonClass

public sealed class SingletonClass {
private static volatile SingletonClass _instance;
private SingletonClass()
{
 }
private static readonly object _syncRoot = new object();
public static SingletonClass Value
{
get
{
if (_instance == null)
{
lock(_syncRoot)
{
if (_instance == null)
{
_instance = new SingletonClass();
}
}
}
return _instance;
}
}
}

 正如您所见,该模板接受字符串输入并使用该类名生成单独的类。在模板主体中,使用与 ASP.NET 中相同的起始和结束标记。在该模板中,我只是插入属性值,但您还可以在这些标记内部使用任意类型的 .NET 代码。在该模板完成之后,您就可以通过双击它或者从 CodeSmith 应用程序中打开它将其加载到 CodeSmith 中。图 4 显示了已经加载到 CodeSmith 中的该模板。

图 4

 您可以看到左侧的属性正是我在该模板中声明的属性。如果我输入“SingletonClass”作为类名,并单击 Generate 按钮,则将生成模板代码底部显示的类。

 CodeSmith 使用起来相当容易,如果能够正确应用,则可以产生一些令人难以置信的结果。面向代码生成的应用程序中最常见的部分之一是数据访问层。CodeSmith 包括一个名为 SchemaExplorer 的特殊的程序集,可用来从表、存储过程或几乎任何其他 SQL Server? 对象生成模板。

 CodeSmith 由 Eric J. Smith 编写,并且可以在 http://www.ericjsmith.net/codesmith 下载。

From:  http://www.godist.cn/blog/article.asp?id=395

.Net开发人员应该下载的十种必备工具(一)相关推荐

  1. .Net开发人员应该下载的十种必备工具(三)

    NDoc 编写代码文档资料几乎总是一项令人畏惧的任务.我所说的不是早期设计文档,甚至也不是更为详细的设计文档:我说的是记录类上的各个方法和属性.NDoc 工具能够使用反射来分析程序集,并使用从 C# ...

  2. .Net开发人员应该下载的十种必备工具(二)

    NUnit NUnit 是为 .NET 框架生成的开放源代码单元测试框架.NUnit 使您可以用您喜欢的语言编写测试,从而测试应用程序的特定功能.当您首次编写代码时,单元测试是一种测试代码功能的很好方 ...

  3. [导入]每个开发人员现在应该下载的十种必备工具

    每个开发人员现在应该下载的十种必备工具 文章来源:http://blog.csdn.net/yanlixin4csdn/archive/2004/07/22/48297.aspx 转载于:https: ...

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

    本文讨论: • 用于编写单元测试的 NUnit • 用于创建代码文档资料的 NDoc • 用于生成解决方案的 NAnt • 用于生成代码的 CodeSmith • 用于监视代码的 FxCop • 用于 ...

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

    本文自发布以来已经增加了新信息.(摘自 msdn ) 本文讨论: • 用于编写单元测试的 NUnit • 用于创建代码文档资料的 NDoc • 用于生成解决方案的 NAnt • 用于生成代码的 Cod ...

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

    http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/TenMHToolEDevShouDN.ms ...

  7. .NET开发不可错过的25款必备工具

    .NET开发不可错过的25款必备工具 这些年来,我们的.NET开发团队不断在更新升级开发工具,这也提供了一个机会,让我们能对.NET系列的开发工具做出不断的评估和规范.以下是我 们总结出的一些.NET ...

  8. [网摘].NET 程序员十种必备工具-概述

    从 MSDN 中看到这篇文章,觉得不错转了过来,对于我这样的.NET新手来说每个工具都是提高效率的好开始.将这十款软件的介绍重新格式化一下,方便以后查阅.以 ".NET 程序员十种必备工具& ...

  9. 开发人员该选择什么大数据工具提高工作效率?

    开发人员该选择什么大数据工具提高工作效率? 海量数据使得数据分析工作变得繁重困难,开发人员选择合适的大数据工具来开发大数据系统成为新的挑战.因此开发人员要根据不同的数据处理方式对大数据工具进行分类. ...

最新文章

  1. 谷歌、亚马逊的顶级GPU被质疑太贵了!这种CPU算法竟然快15倍
  2. [SDOI2017]新生舞会
  3. Ubuntu 18.04 Authentication Error
  4. nodejs mysql模块_NodeJs使用Mysql模块实现事务处理
  5. python md5加密数据
  6. 安装windows和android双系统,安装Windows和Android双系统.doc
  7. 李彦宏候选工程院院士;陌陌回应探探下架;拼多多回应“刷单”质疑 | 极客头条...
  8. 兰州大学2016年初试成绩基本要求
  9. 快速了解Linux curl命令
  10. 纯html网页重定向与跳转
  11. 小米9pro MIUI11.12.19 简化代码 布局随切 核心CPU 黑域
  12. 时间片轮转调度算法模拟(Linux-C语言)
  13. Pandas —— Periods(周期)的创建、运算及转换
  14. 使用Scrapy爬取链家二手房
  15. JavaScript面向对象实现-坦克大战(附前端全套学习路线)
  16. vue集成svg-sprite-loader
  17. Java学习-面向对象进阶二
  18. XCTF_MOBILE15_人民的名义-抓捕赵德汉1-200
  19. mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
  20. Android快捷方式

热门文章

  1. 删除wallet里面登机牌_登机牌丢失问题
  2. 5918. 统计字符串中的元音子字符串
  3. leetcode 1128. 等价多米诺骨牌对的数量
  4. 掩码 项目编码_每天进行20天的编码项目
  5. 如何确保您的Progressive Web App保持其Lighthouse审核分数
  6. 机器学习岗位太少_太多的东西要学习,很少的时间
  7. es6 迭代器_揭秘ES6迭代器和迭代器
  8. Flutter 36: 图解自定义 View 之 Canvas (三)
  9. DSOfile,修改windows系统文件摘要
  10. GZIP pre-compression