淘宝联盟链接的网站怎么做的,写作投稿网站,wordpress站点名没有更改,推广运营是做什么的原文N多年前微软官网曾发了.Net下必备的十种工具#xff0c;N多年过去了#xff0c;世异时移#xff0c;很多东西都已经变化了#xff0c;那个列表也似乎陈旧了。而且#xff0c;该文也只是对十种工具独立的介绍#xff0c;显得有些罗列的感觉#xff0c;是不是每个工具… 原文N多年前微软官网曾发了.Net下必备的十种工具N多年过去了世异时移很多东西都已经变化了那个列表也似乎陈旧了。而且该文也只是对十种工具独立的介绍显得有些罗列的感觉是不是每个工具都是同等重要工具与工具之间是否有联系等等阐述得并不明确。这里我想从另一个角崖重新归纳一个更新的更实际的武器库。更新是因为有很多最近几年才出来的工具/框架库更实际是因为我自己的项目就完全依赖使用。Visual Studio这个似乎是不言而喻的只是从严谨的角度也列在这。实际上现在也有一个开源的IDE开发环境发展也不错叫SharpDevelop。我并没有仔细看不敢妄评。而我因要用到之后会讲的Resharper也迫使我只能用VS。Resharper---重构必备无论是从其名称还是实际功能Resharper绝对称得上利器一旦你用熟了你就再也离不开它了。我去年换工作很大一部分原因就是因为原单位不让我使用Resharper。几个面试我也总在重复提出我这一要求。直至最新版本6.1为止Resharper已经是个多面手。早期它还只是个重构的工具如今它是反编译器(原来的Reflector.Net就用不上了)还是个代码审查工具(代码规范审查)还是代码生成器(Code Smith又用不上了)最后它对键盘快捷键的组织使用对无鼠标操作极其有益。一句话Resharper能极大提高编码的效率利器更是重器。Fluent nHibernate--- 域驱动DDD必备这件武器其实分为两部分一个是Fluent一个是nHibernate (这不是废话)。nHibernate知道了解的人很多就是一个ORM工具而加上Fluent之后就知之甚少了。从功能上Fluent只是在原来 ORM工具基础加上一层封装以Fluent Interface形式提供了使用nHibernate的API。可是别小看这一层封装从使用体验和效率提高方面Fluent nHibernate有着卓越的功效。就我个人经历就是在Fluent nHibernate之后才真正使用喜爱上nHibernate本身。让大多数人比较头疼的创建映射XML文化被全部C#文件代替甚至可以完全省略。可以说这两部分是一个完美的结合后者提供强大的基础功能前者提供完美的使用接口。这不是一个成功软件必须的两个要素吗?什么是ORM不会吧放狗搜搜就知道了。我只想强调的是不要把它仅仅看作一个功能库它更是个架构设计的利器。从架构的角度它把业务域和数据层隔离使得数据模型和业务域模型独立设计成为可能。这一点的影响是非常深远的。nUnitMachine SpecificationRhino MockAutoMocking--- 单元测试必备啊呀不得啦。上一武器我一下子介绍俩这一次白送四个。这也体现我写本文的指导思想从开发使用的角度来叙述而不是从工具提供者来还分。这四个套件在一起实在是太完美了nUnit又是一个众所周知的测试框架它提供了测试的基础功能和概念。MSpec从BDD的角度封装了一下nUnit也可以说是重构了一下语法使测试可具有可读性提供良好的测试组织结构进而可以测试完了直接生成一个完美的测试结果文档。Rhino Mock也是一个熟客了但是旧中有新新的几个版本也加入了一些可圈可点的新性能如所谓AAA语法(Arrange, Action, Assert 这与MSpec的 Establish, Because, It关键词完全契合)。而从我的角度看到的亮点仍然是可读性的改进。最后AutoMock的出现又让事情更加简单了连创建Mock对象的语句都省掉只要你把依赖类的接口在被测试的类的构造器中声明传入AutoMock就自动为你创建Mock对象就如同它的名字所表达的一样自动Mock。当然还有高级应用暂不赘叙。SQLite--- 集成测试必备什么数据库也算?是的不过这里SQLite不是我的产品数据库而是用它的内存数据库做集成测试的工作可以说是集成测试的利器。I\O读写历来是性能的瓶颈而敏捷编程对测试的高度依赖也是对测试性能的高度要求。即使是高度覆盖率的单元测试也仍然不够我们依然希望能在持续构建CI中每次能自动运行集成测试。而如果要有真正独立、干净的集成/用例测试最好是每个测试用例完全重建数据库重置测试数据这样的要求只有内存数据才能得到良好的性能。使用SQLite证的内存库后不光集或服务器可以轻快的完成集成测试。开发人员本地也把集成测试很快的运行完。这样我们的敏捷流程中不仅包括单位测试必须通过甚至也包括了集成测试。它的名字叫用户故事。不过这个工具有个小小的问题因为SQLite是基于C开发的针对32位和64位系统它分别发布了两套控件所以你必须根据自己的平台3引用不同的Dll文件。而且VS项目编译设置还必须明确指明是x86还是x64不能设为Any CPU。就为这个由题我很是头疼了几天最后才找到这个解决方安案。使用上由于前面使用了Fluent nHibernate除了配置不用对代码做任何改动。如果要改改了也就不是真正的集成测试了不是吗?Git--- 源代码管理必备如果你能一天就把代码写完你就不需要源代码管理你能吗?做为一个源代码管理的新秀, Git的发展是极其迅猛的。我看好它是它优秀的底层设计优秀的业务模型. 如果要了解什么是DDDGit是一个非常好的典范。一般的源代码管理都是基于单个文件的版本控制而Git一开始设计就是基于每个提交(代码文件树) 来追溯版本。你可能会不赞同我的说法因为很多代码控制仍然提供了项目级的分支或者版本其实那只是一个假像。VSSSVNTFS的最底层都先是文件版本控制在这个基础之上再提供项目版本的功能。而Gif却恰恰相反。这个很重要吗?是的区别非常之大。引用DDD的思维即然从用户的角度代码控制版本是基于文件树的为什么你的业务模型却不是呢?所以我把耙VSSSVN等的这种实现方式看作打补丁/修补方式总有一天补了摞补了至于最后再也不能修补了。还有一点Git是分布式代码管理库。TeamCity--- 持续构建必备嘘抹汗总算到讲到最后一个已经写得太长太多了写者累看者烦。从CI工具的鼻祖CCNet升级到TeamCity之后感觉确实不一样鸟枪换炮。为什么要CI好像不是我这一篇短文可以讨论清楚的。TC的好处第一是商业软件并且免费一般这两点很难同时出现。当然有个限制如果你只使一个编译代理服务的话这个对我来说已经足够。第二它对很多三方工具支持做得很好。如 nUnit, MSpec,Git等。最重要的是它是CI服务器!