明志唯新

老衣的开发工具和类库集之 2014 版

发表于

今天是 2015 年的元宵节了,14 年承诺朋友们公开自己常用的工具和类库集,一直没能及时兑现。今天忙里偷个闲,整理了一下清单,在此公布出来,希望能够对大家在 .NET、App、Web 等开发方面有所帮助。也当是给 .NET 开发者一个元宵礼物吧,哈哈。不废话直接上菜啦~ 【注:最下方有补充更新】

Visual Studio 2013 扩展

  • Visual Studio 2013 Update 4:是目前微软发布的最新版开发工具升级包,高效而且强大。下面的扩展都是该版本的 Visual Studio 下的,老版本可以根据名字自行查找安装。
  • CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式。并在开发时实时提供代码复杂度的报告,以便帮助开发人员降低代码复杂度、提高代码质量。
  • CssCop:可以帮助开发者检查和编写优秀的 css 代码,提高 css 对浏览器的兼容性、编码质量和渲染性能。
  • NuGet Package Manager for Visual Studio 2013: 一组用于自动执行从VS项目中安装、升级、配置和删除依赖包的过程的工具。本文档中的前后端技术选型中的绝大部分包会使用该管理器管理。
  • Productivity Power Tools 2013: 大幅提升 VS2013 开发效率的扩展工具集,2012 版的功能已经被微软官方合并到 VS2013 官方版本中,这是 2013 的增强版本,对代码维护和开发效率都有很大的帮助。
  • Razor Generrator:该扩展主要是可以把 Razor 视图文件在项目中自动生成对应的 C# 代码,以提升 MVC 项目的视图质量和运行速度,本文后面会详述。
  • SpecFlow for Visual Studio 2013:是优秀 BDD 类框架SpecFlow 的 VS2013 扩展可以将 Features 自动生成 C# 代码和对应的单元测试方法预定义,提高BDD过程的效率和验收代码的开发速度。
  • Unit Test Generator:可以帮助快速生成单元测试项目和测试方法定义,提高单元测试编写效率。
  • Web Essentials 2013 for Update 4:VS 官方团队对 Web 开发工具功能增强的前瞻扩展项目,通常此扩展中被验证十分成熟的功能就会集成到下个版本的 Visual Studio 中。该扩展对时下流行的 Web 开发前端技术提供非常高的支持度,且更新速度很快。支持 css 颜色选择器、js 和 css 的压缩工具、zencoding、less 等等超多 web 开发者需要的强大功能
  • xUnit.net runner for Visual Studio 2012 and 2013:为 VS2012 和 VS2013 内置的测试资源管理器提供 xUnit 支持。可在不离开 VS 开发环境的情况下快速执行单元测试,提高 TDD 和 BDD 开发过程的效率。
  • .NET Portability Analyzer:可以检测和分析代码对 .NET Framework、Windows、Windows Phone、Silverlight、Windows Phone Silverlight、Mono、Xamarin.Android、Xamarin.iOS、ASP.NET vNext 等目标平台的兼容性做详细的分析。
  • AngularJS SPA Template:基于 AngularJS 的单页面应用开发项目模板
  • jQuery Code Snippets:130 多个 jQuery 代码片段,这是是依赖 jQuery 开发前端的福音啊
  • Nancy.Templates:用来快速创建 NancyFx 项目的模板集,如果你已经开始基于 NancyFx 开发 Web 应用或 WebApi 了,赶紧安装这个项目模板吧,会节省很多时间跟精力
  • NUnit Test Adaper:为 VS2012 和 VS2013 内置的测试资源管理器提供 NUnit 支持。可在不离开 VS 开发环境的情况下快速执行单元测试,提高 TDD 和 BDD 开发过程的效率。
  • OzCode:这个扩展可以大幅提升代码调试的体验,具备强大的结果搜索、跟踪、比较等功能,绝对是 Debuging 一族的居家旅行、杀人放火之必备!嗯,不过呢,这东西收费的,个人用户 70$,公司用户 105$。但如果是你开源项目作者、或者是微软 MVP,那么恭喜你了——可以免费使用!!!
  • OrleansVSTools11:Orleans 是微软研究院出品的一个基于 Actor 模型的开源框架。这个框架目的在于尽可能减少创建互动式的服务时所面对的各种挑战,微软著名游戏 Halo 的服务端就是跑在 Orleans 上的。如果你对云计算和 Actor 模型编程感兴趣,建议安装一下该框架,安装成功后VS就会自动安装有该扩展了。

独立工具软件

  • Xamarin:强大的跨平台开发工具,可以用 C# 为全球几十亿的设备开发 App,支持的系统包含但不限于 iOS、Mac、Windows、Linux、Android ……
  • Fiddler:强大的 HTTP 监听和分析工具,可通过内部自动代理机制监听 IE、Chrome、FireFox 等浏览器的访问情况,并通过强大的内置分析工具和扩展插件对网站进行详细的分析和检查,以便排查网站bug、优化网站性能等。
  • Git:时下最流行的版本控制工具,微软的新版 TFS 中也内置 Git 的支持。Git 具备分布式能力和强大的分支管理能力
  • CLRProfiler:微软官方出品的 CLR Profiler 工具,可用于分析 .NET 类库或应用程序的运行状况,可用于在无代码情况下找出性能瓶颈和异常原因等。
  • ExpressProfiler:用于在开发环境(非数据库所在机器上)对数据库的执行情况进行监控分析,常用于分析 SQL 错误和 SQL 性能瓶颈等。注:新版 SQL Server Express 已经带有 Profile 工具,但如果你忘记安装了,仍可以用这个工具。
  • IISExpress:用于在没安装 IIS 的机器上,以 IIS 相同的方式运行 Web 应用程序。为开发者调试 Web 应用程序提供方便快捷安全的手段。注意, IISExpress 运行的站点默认只能本机访问不能远程访问。
  • ab.exe:Apache 出品的 Web 负载测试工具,我们在开发和测试运行阶段会经常使用该工具测试 Web 应用的抗压能力。
  • ILSpy:一个开源的 .NET 反编译工具,简洁强大易用。国内还有人做了个中文汉化版本
  • Database .NET:创新/强大/直觉式的多重数据库管理工具,以一致性与更简单的方式来显示与管理不同的数据库系统,绝大部分功能是免费的,但是收费版体验更好。有了它,几乎可以管理市面上所有关系型数据库:Access、Excel、dBase、FoxPro、SQLite、Firebird、MySQL、PostgreSQL、HP Vertica、Oracle、SQLCe、SQL Azure、SQL Server、IBM DB2、Informix、SybaseASE、NuoDB、Teradata、OLEDB、ODBC、OData ……
  • PuTTY:跑在 Windows 系统上的 SSH 和 telnet 客户端,可用它在 Windows 上运程管理 Linux。
  • Everything:Windows 上我所见过的最快的文件搜索软件,速度抛开 Windows 系统自带搜索功能大概地球到木星的距离——只要你的文件系统格式是 NTFS 的。
  • LinqPad:对 EF 或 Linq 的查询有困扰,可以用这个工具分析试试,十分强大。
  • MarkdownPad 2:Windows 上的 Markdown 编辑器,带有自动预览和图片上传功能,是喜欢用 Markdown 写作的人必备之工具
  • SysinternalsSuite:是微软发布的一套非常强大的免费工具程序集,含有近百个实用的小工具。而其中也包含了 Windows 上做演讲演示的必备工具 ZoomIt
  • 老外收集的一些 .NET 小工具,http://www.sliver.com/dotnet/index.aspx 其中的屏幕尺我一直都很喜欢

前端开发库

Bootstrap

Twitter 团队出品,简洁、直观、强悍的前端开发框架,让 web 开发更迅速、简单。3.1 支持 IE8+、Chrome、Firefox、Safari、Opera 等浏览器。框架的语法和规范完善优秀,文档详细。支持使用 LESS 语法进行个性化定制。

官方网站: http://getbootstrap.com

中文文档: http://v3.bootcss.com/getting-started

LESS

LESS 是一种动态样式语言,LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持 IE 6+, Webkit, Firefox),也可以借助 Node.js 或者 Rhino 在服务端运行。

官方网站: http://lesscss.org

中文文档: http://www.bootcss.com/p/lesscss

Font Awesome

Font Awesome 号称是完美的图标字体,专为 Bootstrap 而设计的。一个字体文件中包含了多达几百个图标,支持 IE7+,矢量图可无限缩放,完美支持 Retina 等超高像素密度的显示器,兼容屏幕阅读器。

官方网站: http://fontawesome.io

中文文档: http://www.bootcss.com/p/font-awesome

html5shiv

越来越多的网站开始使用 HTML 5,但是目前的情况是很多人一样在用 IE6、IE7、IE8 等不支持 HTML5 的旧版IE浏览器,Html5shiv 是解决此问题的不错手段,它仅仅是个 js 文件,在需要的时候(低于 IE9 时)引用一下即可。

官方网站: https://github.com/aFarkas/html5shiv

jQuery

目前全球 Web 开发领域最流行的前端 js 框架,由于本网站官方要求支持 IE8,所以本项目不能使用 2.x 的版本。

官方网站: http://jquery.com

jQuery.Cookie

jQuery 的 Cookie 操作插件,用于在网站前端读、写、删 cookies。

官方网站: https://github.com/carhartl/jquery-cookie

jQuery.Hotkeys

jQuery 的前端热键插件,用于给 web 页面提供快捷热键功能。

官方网站: https://github.com/tzuryby/jquery.hotkeys

jQuery.Validation

jQuery 的前端验证插件

官方介绍: http://bassistance.de/jquery-plugins/jquery-plugin-validation

Microsoft.jQuery.Unobtrusive.Validation

jQuery 的前端验证插件的扩展,可以不用写 js 代码实现大部分的 jQuery.Validation 功能

官方资料参考页面: http://go.microsoft.com/fwlink/?LinkId=389866

linq.js

linq.js 是用于在 Web 前端的 js 代码中使用类似 C# 的 Linq 语法对数据进行查询统计等处理

官方网站: https://linqjs.codeplex.com

Modernizr

专为 HTML5 和 CSS3 开发的功能检测类库。Modernizr 是一个开源的 JS 库,它使得那些基于访客浏览器的不同(指对新标准支持性的差异)而开发不同级别体验的设计师的工作变得更为简单。它使得设计师可以在支持 HTML5 和 CSS3 的浏览器中充分利用 HTML5 和 CSS3 的特性进行开发,同时又不会牺牲其他不支持这些新技术的浏览器的控制。

官方网站: http://www.modernizr.com

RequireJS

国际上非常流行的前端 js 模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更简单自然。其与国内淘宝团队出品的 SeaJS 差异在于遵循的标签不同,RequireJS 遵循的是 AMD(异步模块定义)规范,SeaJS 遵循的是 CMD (通用模块定义)规范。由于本站会用到较多 jQuery 库和 jQuery 插件,所以遵循 AMD 规范的 RequireJS 更适合。

官方网站: http://requirejs.org

AngularJS

Google 公司出品的Web前端 VMW(View-Model-WhatEver) 框架,AngularJS 是一款开源 JavaScript 函式库,并由 Google 维护。它的目标是增强基于浏览器的应用,并带有 MVC 模式功能。具备非常优秀的性能和双向绑定特性。

官方网站: http://angularjs.org

Momentjs

Moment.js 是一个轻量级 JavaScript 日期库用于解析、操作和格式化日期。它设计成可运行在浏览器和 NodeJS 两种环境中,并且所有单元测试也都可以在两种环境中运行。

官方网站:http://www.momentjs.com

QUnit

QUnit 是一个强大的 JavaScript 单元测试框架,用于调试代码。该框架是由 jQuery 团队的成员所开发,并且是 jQuery 的官方测试套件。任意正规 JavaScript 代码 QUnit 都能测试。

官方网站: http://qunitjs.com

jQuery.Mockjax

jQuery Mockjax 是专用于在 web 前端开发时,对 ajax 请求进行模拟 (Mock),达到不依赖于服务器端,就能正常开发前端 Ajax 的 jQuery 插件。并可以跟 QUnit 很好的结合使用进行前端单元测试。

官方项目: https://github.com/appendto/jquery-mockjax

jQuery.MockJSON

MockJSON 是一个可用于 Mock JSON 和 JSONP 请求及响应的 jQuery 插件,可在不依赖服务器端 WebApi(或 WCF、WebService)的情况下测试开发 Web 前端的应用。并且带有很强的可扩展性。

官方项目: https://github.com/mennovanslooten/mockJSON

Underscore

Underscore 一个 JavaScript 实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象。它弥补了部分 jQuery 没有实现的功能,同时又是 Backbone.js 必不可少的部分

官方网站: http://underscorejs.org/

spin.js

纯 js 写的 Ajax Loading 指示器,不用任何图片,且兼容几乎所有时下的浏览器。

官官方网站:http://fgnass.github.io/spin.js/

NProgress.js

最近很火的一个进度条 js 库,完美支持 Turbolinks、Pjax、重型 Ajax 应用。

官方网站:http://ricostacruz.com/nprogress/

store.js

一个实现了浏览器的本地存储的 JavaScript 封装 API,不是通过 Cookie 和 Flash 技术实现,而是使用 localStorage、globalStorage 和 userData。

官方网站:https://github.com/marcuswestin/store.js/

服务端类库

NancyFx

Nancy 是一个不错的轻量级开源 .NET Web 框架。如果想快速做个简单的 Web 应用,Nancy 是个不错的选择。作为NancyFx 的粉丝,作为博主我也将在本博中开写一系列介绍 NancyFx 的文章。敬请关注!

官方网站:http://www.nancyfx.org

Newtonsoft.Json

目前 .NET 开发中最流行的JSON序列化库,为新版的 WebApi 库提供基础。

官方网站: http://james.newtonking.com/json

Autofac

Autofac 是 .NET 开发领域最流行的 IoC 库之一,轻量且高性能,对项目代码几乎无任何侵入性,可无 config 运行。IoC 理念在降低耦合方面表现非常突出,并可为项目代码的可测试性提供帮助。扩展性非常优秀,官方也提供了大量的扩展库,以应对各种场景。

官方网站: http://autofac.org

AutoMapper

流行的对象映射框架,用于 Entity、DTO、ViewModel 等之间的映射时非常方便,可减少大量硬编码。很小巧灵活,性能表现也可接受。

官方网站: http://automapper.org

Elmah

实现最流行的 ASP.NET 应用异常日志记录框架,可以详细的将运行时的各种异常记录在文件、数据库或其他可能的任何位置。对网站运营期内发现和修复异常非常有帮助。

官方项目: http://elmah.googlecode.com

Lucene.Net

流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。迁移自 Java 的 Lucene 库。

官方网站: http://lucenenet.apache.org

Lucene.Net.Analysis.PanGu

支持 Lucene.Net 最新版的盘古中文分词扩展库。

盘古分词组件: https://pangusegment.codeplex.com

DotNetOpenAuth

DotNetOpenAuth 可以让网站具备支持 OpenID、OAuth、InfoCard 等身份验证的能力。 提前引入该库,可以为本站未来支持微博、人人等平台登录提供先期基础保障。

官方网站: http://www.dotnetopenauth.net

Quartz.NET

Quartz.NET 是一个 .NET 版的任务调度框架。可用于定时处理数据或发邮件等工作。

官方网站: http://www.quartz-scheduler.net

NLog

NLog 是一个简单灵活的 .NET 日志记录类库。通过使用 NLog,我们可以在任何一种 .NET 语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。 相比于 log4net,NLog 的使用难度和维护难度要低很多,而在异步情况下性能要比 log4net 高很多。日志的记录不应该影响正常业务的执行速度,所以采用异步是非常必要的。

官方网站: http://github.com/NLog/NLog

System.IO.Abstractions

.NET框架非常优秀,但是一些底层设计在一些情景下会显得缺乏考量,比如 System.IO 中的类,在 .NET 框架中就没有对应的抽象,会造成文件的读写一定是真实文件的操作。当需要在单元测试中对文件操作做庄进行模拟时,就无法实现了,尤其是面对云计算、云存储环境下,文件的存储和操作已经不是那么简单了。所以牛人就为此做了一个通用的抽象 System.IO.Abstractions 。

项目网站: https://github.com/tathamoddie/System.IO.Abstractions

EnyimMemcached

Memcached 是非常优秀和流行的分布式缓存服务器软件,EnyimMemcached 则是它在 .NET 上目前最优秀的客户端驱动,集成不错的分布式均衡算法。另外还支持 Membase。

项目网站: https://github.com/enyim/EnyimMemcached

SharpZipLib

.NET 上优秀的 Zip 处理库,可以处理 Zip、GZip 等。

官方介绍网站: http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx

AttributeRouting

可以通过 Attribute 直接设置 Controller 或 Action 的路由地址,使得 MVC 中设置路由变得直观方便。

官方网站: http://attributerouting.net

RouteJs

前端 js 代码经常要通过 ajax 访问服务器端的地址,在 MVC 项目中一个地址是有路由映射出来的,一个地址对应的 Action 也是路由映射护理的。如果开发过程中可能经常变动服务器端的路由映射规则,会使得 js 请求的地址都要改变一次,RouteJs 则可通过向客户端传递服务器上的路由表来实现客户端请求的地址随服务器端路由映射的改变而改变的情况。

官方网站: http://dan.cx/projects/routejs

RazorGenerator

ASP.Net MVC 3 后官方就支持 Razor 视图引擎,该引擎给 .NET Web 开发者带来极大的便利和优秀的开发体验。默认情况下,MVC 中的视图是在被请求到时动态编译执行的,也就是说不请求就不编译,会造成几个明显的问题:

  1. 不执行到该视图就不知道是否存在编译级的错误;
  2. 请求时才编译视图,使得性能变得低下;
  3. 如果项目还带有 Area,那么部署时会有各种痛苦的经历
  4. 要脱离 Controller,单独对视图进行单元测试,会发现非常麻烦

Razor Generator 通过 Visual Studio 自定义工具功能,对 Razor 视图提供开发时的编译能力,部署时不需要传输视图文件,只传输 dll 即可。运行效率、部署效率、可测试性均大幅提高。

项目网站: https://razorgenerator.codeplex.com

WebActivator

WebActivator 可以让 ASP.NET 应用具备不修改 Global.asax,就能加入应用启动事件的代码逻辑的能力。在降低项目的耦合方面具有积极意义。

项目网站: https://github.com/davidebbo/WebActivator

FastReflectionLib

国内 .NET 领域的大牛之一老赵开发的快速发射类库,可以获得比内置反射类更高的性能。

项目网站: http://www.codeplex.com/FastReflectionLib

Moq

非常流行的 Mock 框架,灵活且高性能。也是目前 .NET 领域唯一支持 Linq 的 Mock 框架

项目网站:https://github.com/Moq/moq4

CsQuery

CsQuery 相当于是 jQuery 的 C# 实现,可以在 C# 代码中对 HTML 进行查找、筛选、处理等 DOM 操作。只要你熟悉jQuery,就很容易学会在 C# 中用 CsQuery 处理 HTML 了。

官方代码库:https://github.com/jamietre/CsQuery

SpecFlow

SpecFlow 是非常优秀的免费的 BDD 框架和验收测试框架,支持业务人员(非技术人员)可懂的功能描述语言规范。支持常见的国际化语言,当然也包括简体中文和繁体中文等。

官方网站: http://www.specflow.org

Simple.Data

Simple.Data 是一个简单的可以代替 ORM 甚至 DAL 的数据访问框架,其严重依赖于 dynamic 特性,且具备高可测试性。深得我的喜欢,在小型项目使用可以成本提高开发效率。

官方文档:http://simplefx.org/simpledata/docs/index.html

官方代码库:https://github.com/markrendle/Simple.Data

xUnit

NUnit 框架作者重新开发的非常优秀的单元测试框架,目前 ASP.NET MVC 官方团队全部使用的 xUnit 框架编写的 ASP.NET MVC 单元测试。

项目网站: https://xunit.codeplex.com

EmbeddedMail

网站开发过程中,免不了要开发发送邮件的功能,对应的也应该写单元测试代码。如果使用真实的 SMTP,会给一些真实邮件接收者代理困扰,也会因为过程太慢而失去单元测试的持续有效性,而在持续集成服务器上更会表现差劲。所以开发阶段应该使用模拟的 SMTP 服务代替真实的,EmbeddedMail 是这方面表现比较不错的框架之一。

项目网站: https://github.com/jmarnold/EmbeddedMail

WatiN

开发和验收过程不免需要自动化运行真实的 IE 或 FireFox 浏览器进行测试,尤其是验收测试时,非常必要。WatiN 就是为此而生的。

官方网站: http://watin.org

LTAF

LTAF 是微软总部的 ASP.NET 团队开发的轻量级测试自动化框架,虽然已经接近 2 年没有再更新了,但是在一些情景下依然是表现不错的框架。

官方网站: https://ltaf.codeplex.com/

补充原文遗漏

Hprose

Hprose 是我大学同学 andot 开发的一套开源的高性能远程对象服务引擎(High Performance Remote Object Service Engine)。非常易用,而且性能极佳,对传统 WebService 和 RPC 有性能或跨平台意见的同学可以用用,因为作者把市面上流行的几种语言、框架都做了支持,如:php、go、ruby、python、nodejs、object-c、AAutor Quicker、ActionScript、ASP、Hack、Delphi、javascript、java、.NET、dart、D、Perl、swift、lua、cpp 等。你可以在 https://github.com/hprose 找到它们。

官网:http://hprose.com

SignalR

SignalR 是一套 ASP.NET 下实现实时通信的 Web 应用开发框架,集成客户端与服务器,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。SignalR 会自动根据客户端选择合适的技术来实现实时程序方式。我们只要关注更高层面的业务实现,无需关注技术上的实现细节。比如,轻松实现一个聊天室。

官网:http://signalr.net

NPOI.CSS

阅读过我过往博客的同学应该看过我对 NPOI.CSS 的介绍,这是由于内部项目需要,而创建的简单快速设置 Excel 单元格样式的类库。当你用 NPOI 对单元格设置复杂样式的时候,原本需要很多行代码,且还要时刻提防样式数超标的问题(Excel 对单文件内的样式数量有限制),这是很困扰人的。于是我开发这套可以用类 CSS 的方式设置单元格样式的类库,比如下面这样一行

cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋体;border-type:thin;");

就可以轻松给单元个设置字体为宋体,字体颜色为红色,且为粗体、11 号大小,并给单元格打上细边框。很简单吧?

官网:https://github.com/qihangnet/npoi.css

iBoxDB

iBoxDB 是我博客程序 MZBlog 新版中所采用的 NOSql 数据库,其具备类 SQL 的一些特性,但的确是个 NOSql 数据库。高性能、无依赖、线程安全、先天支持 Java 、.NET、Android、Mono、Unity3D、Xamarin、Nashorn、Linux、Windows Phone 等平台、支持索引、事务、主键、零配置,内嵌或独立 Server,用类 SQL 语局查询、支持 Linq。官方有跟 MongoDB 的性能对比,基本是高于 MongoDB 的。MZBlog 采用 iBoxDB,而放弃原来使用的 MongoDB,原因主要是不希望这样一个轻量级博客依赖于一个 Server 级的数据库,那不利于迁移和部署。关于 MZBlog 新版,我将会另起一篇博文详述相关内容。

官网:http://www.iboxdb.com

CsvHelper

CsvHelper 是 .NET 上处理 CSV 文件的利器,快速、灵活且十分易用。支持读写自定义类型对象。

官网:http://joshclose.github.io/CsvHelper

RestSharp

RestSharp 是我用过的最好的 REST Api 调用类库,没有之一。支持同步、异步。总之,有了它,你完全可以放弃微软官方那个了,哈哈……

官网:http://restsharp.org

C5

C5 是 IT University of Copenhagen 出品的一套支持 C# 和其他 CLI 语言的开源泛型集合类。提供了标准.NET框架System.Collections.Generic 命名空间下所没有提供的功能和数据结构,比如 Persistent Tree、Circular Queue、Hashed Array List、Sorted Array、Hashed Linked List 等

官网:http://www.itu.dk/research/c5

源码库:https://github.com/sestoft/C5