Read Sean
Read me, read Sean.
posts - 508, comments - 655, trackbacks - 9, articles - 4
导航
BlogJava
首页
新随笔
联系
聚合
管理
公告
关于我
人生是一场对话
我的译作
声明
所有文章和代码在这里以"现状"提供,作者不提供任何形式的担保,也没有授予除阅读和有条件共享之外的任何权利。除非特别说明,所有文章均为本blog作者原创,如需转载请注明出处和原作者,如用于商业目的,需作者本人书面许可。
推荐文章
Pylons起步
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(29)
给我留言
查看公开留言
查看私人留言
随笔分类
(842)
Computer Usage(72)
Database(9)
GNU/Linux(30)
On Eclipse(52)
On Java(131)
On Python(11)
Operating Systems(70)
Other Languages(28)
Programming in General(41)
Project Management(25)
Reading(189)
The Other Side(129)
Web Clips(55)
随笔档案
(507)
2014年5月 (1)
2014年4月 (1)
2014年3月 (1)
2014年1月 (1)
2012年11月 (1)
2011年8月 (2)
2011年7月 (1)
2011年3月 (1)
2011年2月 (2)
2011年1月 (5)
2010年12月 (2)
2010年1月 (1)
2009年12月 (1)
2009年11月 (1)
2009年10月 (1)
2009年9月 (1)
2009年8月 (1)
2009年7月 (1)
2009年6月 (2)
2009年5月 (1)
2009年4月 (1)
2009年3月 (2)
2009年2月 (2)
2009年1月 (15)
2008年12月 (10)
2008年11月 (1)
2008年10月 (4)
2008年9月 (1)
2008年8月 (3)
2008年7月 (3)
2008年6月 (2)
2008年5月 (2)
2008年4月 (1)
2008年3月 (4)
2008年2月 (5)
2008年1月 (4)
2007年12月 (2)
2007年11月 (2)
2007年10月 (1)
2007年9月 (1)
2007年8月 (2)
2007年7月 (2)
2007年6月 (4)
2007年5月 (3)
2007年4月 (5)
2007年3月 (4)
2007年2月 (23)
2007年1月 (26)
2006年12月 (30)
2006年11月 (14)
2006年10月 (6)
2006年9月 (2)
2006年8月 (3)
2006年7月 (3)
2006年6月 (5)
2006年5月 (3)
2006年4月 (17)
2006年3月 (9)
2006年2月 (28)
2006年1月 (17)
2005年12月 (8)
2005年11月 (23)
2005年10月 (43)
2005年9月 (19)
2005年8月 (30)
2005年7月 (13)
2005年6月 (7)
2005年5月 (5)
2005年4月 (12)
2005年3月 (20)
2005年2月 (19)
2005年1月 (8)
文章档案
(4)
2010年12月 (1)
2009年1月 (1)
2005年8月 (1)
2005年1月 (1)
Friends' blogs
emu in blogjava
jackei
kukoo's blog
搜索
积分与排名
积分 - 775579
排名 - 55
最新评论
1. re: [Tips] <abbr>: 一个有趣的HTML标签
dqwdqwdqw
--额范围啊
2. re: [Tips] <abbr>: 一个有趣的HTML标签
<scrtpt>alert("fwefwargvaerg");</script>
--额范围啊
3. re: iText vs FOP - Java动态生成PDF的两个选择
用0.95报错的大概意思是还不支持。。。。。
本地字库的字体embet不进去。。。。
--fop
4. re: iText vs FOP - Java动态生成PDF的两个选择
代码拷贝运行报错啊
--fop
5. 11[未登录]
404
--00
6. re: [Tips] Spring 2.5.6新特性之packagesToScan
101
--11
7. re: Mac安装tsocks
评论内容较长,点击标题查看
--mzj
8. re: [Jakarta Commons笔记] org.apache.commons.lang.time
哈哈,什么情况,10年前的文章,今天来读一读
--宇飞
9. re: Mac安装tsocks
有一个proxychains-ng项目,还在更新,可以试试的
--ayanamist
10. re: SourceForge.net上的文件下载页面无法打开的一种解决方法
评论内容较长,点击标题查看
--Douglas
11. re: [Tips] Windows/Linux双系统重装Windows后无法进入Linux的最速解决办法
linux是进去了,windows又进不去了
--ss
12. re: [RPi] 树梅派安装Archlinux和蓝牙
这种便宜dongle有个问题就是蓝牙MAC地址是一样的,同一环境下使用多个会有点麻烦,需要找个办法绕过去。
--laogao
13. re: [愚公移山] 团队CVS资源库从CVSNT迁移到Linux
评论内容较长,点击标题查看
--guest
14. re: [Jakarta 笔记] org.apache.commons.lang.math[未登录]
评论内容较长,点击标题查看
--doctor
15. re: Jakarta Commons专题 - 随笔列表
可惜晚了这么多年,才读到楼主的文章。
--rox
阅读排行榜
1. [Tips] 恼人的winmail.dat及解决办法(36602)
2. [Eclipse笔记]在Eclipse下做UML设计(28382)
3. [Tips] Spring 2.5.6新特性之packagesToScan(22711)
4. iText vs FOP - Java动态生成PDF的两个选择(13707)
5. IntelliJ IDEA 常用快捷键(12873)
6. pyPdf - 用Python方便的处理PDF文档(12623)
7. [Linux起步]配置Java和Eclipse环境(9852)
8. Java命令行实用工具jps和jstat(9468)
9. 你真的理解了继承和多态吗?(7663)
10. [Eclipse笔记]配置SWT开发环境(7525)
11. Drip, Transfusion, Perfusion还是Infusion?关于一个词的翻译(7445)
12. [Jakarta Commons笔记] org.apache.commons.lang.time(7346)
13. 如何在Ubuntu下访问本地NTFS分区(6486)
14. [Jakarta Commons笔记] org.apache.commons.lang.builder(6078)
15. J2SE(TM) 5.0专题 之 语言特性 // 勘误信息请直接回复(5731)
评论排行榜
1. [Tips] 恼人的winmail.dat及解决办法(48)
2. 6个Gmail邀请,需要的朋友请在这里回复。(已结束)(34)
3. [Eclipse笔记]在Eclipse下做UML设计(29)
4. [Eclipse笔记]请对Java、Sun、NetBeans、Eclipse感兴趣朋友的看看Eclipse对Sun的心态吧(19)
5. 令人惊喜的Feisty,让人失望的Evolution(15)
6. 你真的理解了继承和多态吗?(14)
7. [Jakarta Commons笔记] org.apache.commons.lang.time(11)
8. iText vs FOP - Java动态生成PDF的两个选择(11)
9. [Eclipse笔记]SWT真正的优势不是快这么简单(9)
10. [Linux起步]SuSE Linux 10.0正式发布(9)
11. Drip, Transfusion, Perfusion还是Infusion?关于一个词的翻译(8)
12. [Tips] 在Ubuntu Linux 6.06 LTS (Dapper Drake)上安装CVS服务(8)
13. Nikon F80 + AF Nikkor 50mm/1.4 D 的魅力(8)
14. [Linux起步]配置Java和Eclipse环境(7)
15. J2SE(TM) 5.0专题 之 语言特性 // 勘误信息请直接回复(7)
[VS2005起步]一些实用的工具和配置指南
Posted on 2006-04-01 17:04
laogao
阅读(4083)
评论(1)
编辑
收藏
所属分类:
Project Management
、
The Other Side
新的项目要求使用C#,对于习惯了Java开发模式和环境的朋友来说,一开始总会有些不适应。
拿我自己的体验来说,VS2005跟Eclipse SDK相比,当然画GUI和调试的直观性方面给我留下的印象很深,不过也有些我认为缺少了的东西:增量编译(很多时候只有F6以后,编译错误提示才会消失,有些引用和IntelliSense才生效,不像Eclipse,保存后自动增量编译)、代码排版(很怀念Ctrl-Shift-F)、引用整理(很怀念Ctrl-Shift-O)、很多有用的重构(可以说VS里面代码级的重构相比很多Java IDE差远了)、单元测试的集成(NUnit理论上应该可以很好的集成到VS2005,不过还是花了我一些功夫)、CVS客户端(很怀念Eclipse SDK)。当然,一些IDE当中相对小的差异一开始也很难适应,不过这些也可以理解,属于正常范畴。
最近为了把项目的一些基调和开发模式定下来,做了一些尝试,我想也许对大家还有些用,整理一下放在这里。
一个好的.NET项目,我相信有些东西事先定义好,对项目整个过程是有很大好处的,这些东西至少应该包括:开发工具选择和配置、代码模板、单元测试、代码自动化review工具、自动编译和测试、缺陷跟踪、文档管理等。当然如果不计成本,那么有很多重量级的SDLC框架可以用,如VSTS(MSF)、Rational(RUP)和Borland的集成工具,以上这些环节的问题相应的框架也大都给出了很好的解决方案,但是毕竟不是所有的项目都会购买和采用那么"重"的方法和过程,很多时候就算有那个预算,对于特定的项目,实施起来也不见得就会收到好的效果。于是我们接触到的很多项目,其实都还是需要自己去寻找适合的工具来把整个周期串起来。以下是我在尝试找到一套合适方案时遇到的一些特定问题以及解决办法:
首先是单元测试工具以及和IDE的集成。在Eclipse SDK中,我们不必太过关心这个问题,因为Eclipse已经很好的集成了JUnit。但是在.NET的世界,人们是怎么做的呢?答案是NUnit,一个跟JUnit非常类似的东西。和JUnit一样,NUnit也提供了命令行版本和GUI版本,但是VS里面并没有直接提供集成,你更多的时候需要从外部运行NUnit,当然这样很不爽啦。VS号称是自己也提供了单元测试工具,但是那仅仅在高端VSTS中才有。如何解决这个集成的问题呢?可以到
http://www.testdriven.net/
上下载一个TestDriven.NET的VS add-in。安装以后,就可以在VS中调用我们可能经常需要调用的NUnit来跑自己的单元测试了。
其次是代码模板。一个项目,不管大小,总会涉及到相当数量的源代码文件,我们希望这些源代码都包括一些共有的东西和特定的注释,怎么办?在Eclipse里面有code template的概念,那么在VS里呢?答案是Project Template和Item Template。一开始我根本摸不着头脑,只看到MSDN上正在说Code Snippet,于是我实现的1.0版代码模板就是基于Code Snippet的,用起来很不方便,有关Code Snippet,我等下还会提到,这里先看Templates。我Google了一下相关的Project Template和Item Template的说明,基本都是VS 2003的,不过它们给了我很好的提示,至少可以知道VS在生成默认的代码时是怎样一个思路。所有的VS 2005代码模板都可以在%VS_2005_INSTALL_PATH%\Common7\IDE\ProjectTemplates和%VS_2005_INSTALL_PATH%\Common7\IDE\ItemTemplates目录下面找到,Project Template和Item Template不同的是Project Templates是在你新建一个项目时使用的模板,而Item Templates是在你往一个现有项目中添加item,如Form、Class等的时候使用。这里需要注意两点:一是VS 2005跟VS 2003不同,templates不再是直接的.cs文件等,而是打包在了.zip中,需要修改的话,需要把新的文件重新压到.zip中;二是除了template目录,还有一个TemplateCache目录,为了立即看到模板的效果,这里面的相应.cs文件等也需要修改。模板改起来相当直接,一看便知,比如新建Form的模板:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
namespace
$rootnamespace$
{
public
partial
class
$safeitemrootname$: Form
{
public
$safeitemrootname$()
{
InitializeComponent();
}
}
}
接下来说说Code Snippet,这个东东被MSDN吹得有点大,不过用起来实在有些不顺手,你虽然可以定义一大块代码片断,然后填一些参数,就能得到一个定制的代码段,但是毕竟你还是需要自己写很多东西,然后使用的话需要在代码编辑器里面点很多下才出来,又没有很好的快捷方式。不客气地说我觉得用Code Snippet来模拟Eclipse的很多现成的重构功能实在不能够体现出优势。退一万步讲,有总比没有强,至少你还是可以做一些东西的。使用现成的Code Snippet很简单,只要把VS指向你存放Code Snippets的目录即可,新的Code Snippets会被自动扫描到。方法是:Tools -> Code Snippets Manager或者Ctrl-K Ctrl-B然后添加目录名。所有的Code Snippets文件都以.snippet后缀结尾,其实内部是个XML,像这个样子:
<?
xml version="1.0" encoding="utf-8"
?>
<
CodeSnippets
xmlns
="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"
>
<
CodeSnippet
Format
="1.0.0"
>
<
Header
>
<
Title
>
Insert a simple set of getter and setter pair
</
Title
>
<
Author
>
Sean GAO
</
Author
>
<
Description
></
Description
>
<
Shortcut
>
simplisticGetterSetter
</
Shortcut
>
<
SnippetTypes
>
<
SnippetType
>
Expansion
</
SnippetType
>
</
SnippetTypes
>
</
Header
>
<
Snippet
>
<
Declarations
>
<
Literal
>
<
ID
>
AccessLevel
</
ID
>
<
ToolTip
></
ToolTip
>
<
Default
>
public
</
Default
>
</
Literal
>
<
Literal
>
<
ID
>
PropertyType
</
ID
>
<
ToolTip
></
ToolTip
>
<
Default
>
string
</
Default
>
</
Literal
>
<
Literal
>
<
ID
>
PropertyName
</
ID
>
<
ToolTip
></
ToolTip
>
<
Default
>
name
</
Default
>
</
Literal
>
<
Literal
>
<
ID
>
LocalVarName
</
ID
>
<
ToolTip
></
ToolTip
>
<
Default
>
localVar
</
Default
>
</
Literal
>
</
Declarations
>
<
Code
Language
="csharp"
>
<![CDATA[
$AccessLevel$ $PropertyType$ $PropertyName$
{
get { return $LocalVarName$; }
set { $LocalVarName$ = value; }
}
]]>
</
Code
>
</
Snippet
>
</
CodeSnippet
>
</
CodeSnippets
>
我们可以看到,首先在.snippet中我定义了一些变量,然后在<Code/>段加入了<![CDATA[...]]>,就这么简单。
最后,还剩一些具体的工具,选择面比较广,我只列举一下我都选了哪些:
- 代码review和分析工具:FxCop,可以在GotDotNet网站上下载:
http://www.gotdotnet.com/team/fxcop/
。
- 自动编译管理:NANT和CruiseControl.NET:
http://nant.sourceforge.net/
和
http://ccnet.thoughtworks.com/
。
- 缺陷跟踪:mantis:
http://www.mantisbt.org/
。
- 文档管理: jLibrary:
http://jlibrary.sourceforge.net/
。
- 版本控制:CVSNT和Eclipse SDK:
http://www.cvsnt.org/
和
http://eclipse.org/
。
暂时就是这么多,如果你和我一样从Java转向.NET,然后正在犯愁如何做一个.NET项目的前期准备,希望能给你一些参考。
Feedback
#
re: [VS2005起步]一些实用的工具和配置指南
回复
更多评论
2006-04-01 17:33 by
大胃
补充一点:
http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245411.aspx
多余的/未被使用的using语句在C#源码编译的时候会被忽略,所以在C#中其实不用太在意冗余的using会到来性能影响,但是有好的习惯总是不错的。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Dreaming in Code 是本好书
Debt Metaphor
[愚公移山] 团队CVS资源库从CVSNT迁移到Linux
刚才见面,就说再见: 小记Subversion试用心得
[阅读] Developer Testing Masters and Brain Surgeons
[链接] 承认错误、承认失败
[链接] 管理分布式软件团队
[阅读] 丰田模式在新时代的挑战
[闲侃DRY] Don't Repeat Others
[闲侃DRY] 自制框架 vs. 开源框架
Powered by:
BlogJava
Copyright © laogao