摘要: 昨天安装了Microsoft Expression Studio 4以后,今天上班使用Visual Studio 2008打开一个包含了单元测试项目的解决方案发现单元测试项目无法正常显示,有个加号,就是点不开,项目图标也变成了一个文件夹。上天下地中文英文的网站都翻了个遍,总之很辛苦的花费了2个小时也没找到答案,最后凭着开发人员的直觉搞定了,解决方案如下: 在VIsual Studio安装目录(我的是C:\Program Files (x86)\Microsoft Visual Studio 9.0\)找到Common7\IDE目录,里面会有2个文件夹ProjectTemplates和Proj. 阅读全文
posted @ 2011-05-04 12:37 wenhx 阅读(510) 评论(0) 推荐(1) 编辑
摘要: 下面的例子来至Asp.Net MVC 2的项目模板。  首先是一个实体类:实体类  然后是Action:代码  如果你对这个Action写单元测试,你会发现没办法测试输入不完整的情况,比如下面的代码:单元测试  这个单元测试不会跑完,因为注册的时候由于用户名是null,会抛出异常。因为这个判断:[代码]没有起作用,原因是Asp.Net MVC框架会在调用这个Action之前进行模型验证,由于单元测... 阅读全文
posted @ 2010-11-26 12:03 wenhx 阅读(4497) 评论(4) 推荐(2) 编辑
摘要: 实际上,如果你的mscorlib.dll版本不是2.0.50727.4952的话,一切都很美好,网上很多很多的教程教你如何进入.Net Framework源代码调试。比如这个。 但是,当你的mscorlib.dll版本是2.0.50727.4952的话,恶梦来了。无论你如何修改配置,都会得到一个“没有可用于当前位置的源代码”的提示信息。经过我一个下午的努力搜索,对照了很多F... 阅读全文
posted @ 2010-11-13 19:47 wenhx 阅读(2366) 评论(6) 推荐(0) 编辑
摘要: 今天,想使用自定义的类型作为Dictionary<TKey, TValue> 的键类型,不可避免的要使用到这个接口。如果另外定义一个实现类,使用者必须首先知道有这个类存在,这样调用方才会得到正确的结果。自然想到的办法就是这个自定义类型主动实现IEqualityComparer<T>接口,但是Dictionary<TKey, TValue> 类型并不会去检查这个键... 阅读全文
posted @ 2010-08-26 22:00 wenhx 阅读(2378) 评论(2) 推荐(0) 编辑
摘要: 公司的爬虫在爬取个别网站内容时候发现目标服务器对访问频率做了限制,这样只能限制爬虫访问的频率,造成了信息的滞后和数量始终上不去。于是就研究能不能让访问请求依次通过不同的IP地址访问目标服务器来增大访问的频率。让爬虫在不同的服务器上运行,这是另外一种解决思路,涉及到分布式爬虫的很多问题,不在本文讨论范围内。 Google搜索了半天,找到了一些蛛丝马迹,发现Socket.Bind方法理论上可行。接下... 阅读全文
posted @ 2010-08-14 18:54 wenhx 阅读(5232) 评论(13) 推荐(0) 编辑
摘要: 上次介绍了还有另外两种自定义配置文件的办法,这次介绍WCF所采用的方法。 请看配置文件:代码 有两个自定义节点,extensions和custom,其中extensions定义了扩展类所使用自定义配置文件的处理类,当程序在custom节点中遇到自定义的节点,就会使用这里定义好的类来处理,这是扩展类自定义配置文件的核心。custom是我们的示例节点,定义了一个senders属性,这是一个集合,里面... 阅读全文
posted @ 2010-08-11 11:09 wenhx 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 相关的背景可以看http://www.cnblogs.com/cloudjun/archive/2009/04/04/1429299.html,有机会的建议看书。 刚开始看这本书,第一次接触第一章的这写概念,代码省略的地方多了,看的感觉有点断层。网上初略的找了一下源代码,发现作者自己居然没有提供,能找到的其他实现都没有100%的实现,即不是一个真正可运行的示例代码。为了能够更深入的理解,我自己按照... 阅读全文
posted @ 2010-07-29 17:44 wenhx 阅读(1669) 评论(6) 推荐(2) 编辑
摘要: 今天查看项目代码的时候发现下面这段代码:代码 当时这段代码实现时分了两个Lock为的就是对锁的晚占用,早释放。没想到却带来了多线程环境下可能发生的隐患:某个时刻某个Host的队列长度刚好等于1,这时线程A拥有了锁,那么在第一个Lock检查时该Host队列长度大于0,退出锁。此时另外一个线程B在A退出锁之后也进入了锁,也在第一个Lock检查时发现同一个Host的队列长度大于0,然后退出锁,准备进入... 阅读全文
posted @ 2010-06-25 15:38 wenhx 阅读(410) 评论(2) 推荐(0) 编辑
摘要: .Net 2.0推出以后自定义应用程序配置文件已经很简单了,使用默认的自定义配置文件方式需要在编译时就决定需要自定义的节、元素、属性,这对于一般的应用来说已经够了,但是对于需要支持扩展的应用来说,运行时加载的扩展对象可能需要进行一些配置。如果所有的扩展对象配置都一致,例子可以参考System.Diagnostics命名空间的若干TraceListener类,它们的配置文件的属性都是统一的,因此配置... 阅读全文
posted @ 2010-06-10 17:52 wenhx 阅读(419) 评论(0) 推荐(0) 编辑