不应被遗忘的项目模板

转载 2007年09月29日 12:35:00

1.          问题的引出

在一些较大型的项目中,为了可重用,易维护,常常将系统设计为可插接式的,就是用一个框架将很多个小的组件组装起来。有时一个系统中的组件有数百个之多,而这些组件都要去调用一组类库,对应到.NET中就是有很多个程序集。如下图:

 

 

在这种结构下,在开发时我们就要建很多个项目,这些项目的内部组织方式可以根据其功能进行分类的,比如常见的有:对数据进行列表,对表进行维护,显示打印报表等。对于一个进行单表维护的项目,一般要用到验证,日志,数据访问,自定义控件等,这样就要添加对应程序集的引用。对单表维护而言,界面上控件的摆放,执行的操作,有很多都是相似的。

所以可以想像一下,上百个工程,每个工程都要添加引用,然后给窗体上添加控件,写一些类似的代码。这样的工作烦琐而又容易在工程间产生不一致性,为了解决这些问题,我们可以使用项目模板。

 

2.          为什么是项目模板

l         为什么不使用代码生成:

代码生成对UI层的能力很有限,特别是winform下的窗体,里面有很多设计器生成的代码,代码生成也可以对付,但是不是最佳的选择。而且和VS.net整合度不好。

l         为什么不使用继承:

我们也可以使用继承,但是窗体的继承会有很多麻烦,常见的就是控件大小莫名其妙的自己变化,子窗体使用设计器打不开,显示一片白等情况。虽然我们可以通过.net的工具DbgClr来调试,查找问题。但是相比能带来的好处而言,付出的代价还是太大了。

l         为什么使用项目模板:

n         足够的灵活度:可以自定义项目的引用,包含的文件,可以使用向导接收用户输入,替换代码中的内容,和代码生成中的代码模板功能相似。

n         便于使用:可以将整个过程都集成到Vs.net中,直接通过新建项目来使用自定义的模板,一次完成项目的共通操作。还可以自定义项模板,通过新建文件来添加自己的特定分类的文件。

n         提高代码的一致性:开发人员都使用相同的模板,项目所引用数据集的顺序和版本,是否拷贝到本地等属性都是一致的。文件的命名也是一致的,有规则的。初始生成的代码结构也是一致的。

 

3.          怎样制作项目模板

本来想写写如何制作模板,但是msdn中已经有很详尽的说明了,所以这里只介绍几个重要的操作。

l         如何导出模板:

可以新建一个项目,把它作为模板,定义引用,包含的文件,窗口的公共部分等,然后使用“文件”菜单里的“导出模板”,通过向导来将这个项目保存为模板,这样你就可以在新建项目的选项里看到刚导出的模板,使用它来新建你的项目。

l         如何使用向导:

你也可以在新建项目时使用向导来使你的项目模板能够获取更多的信息,建立向导主要使用Iwizard接口,新建一个类库项目,使一个类从Iwizard接口继承,并新建窗体,用来接收用户输入,然后在实现IwizardRunStarted的方法中接收输入,并置入到replacementsDictionary参数中。然后打开模板的.zip文件,配置其中的. Vstemplate文件,在其中添加WizardExtension项来使用刚才的向导项目。

l         如何建立自己的模板分类:

如果你使用“导出模板”功能,在新建项目的时候,你的模板会出现在列表的最下方,如果你想让你的模板和VS.net的模板放在一起并出现在新建项目对话框中,你可以把模板拷贝到VS.net安装目录的/Common7/IDE/ProjectTemplates/Csharp目录下,并且在命令行中执行devenv /setup。完成后你的模板就和Vs.net的模板在一起显示了。也可以在这里新建一个目录,下面放入自己的模板,这样就创建了一个项目分类。

 

 

相关文章推荐

Android设备10大不应忽略的功能

  • 2012年12月18日 13:25
  • 4.14MB
  • 下载

工信部互联网监管办法不应保护客户端模式

12月14日,工业和信息化部对外公布《互联网信息服务市场秩序监督管理暂行办法(征求意见稿)》(简称“互联网监管办法”),这是国家规范我国互联网“信息基础设施”的重大步骤。如何解读? ...

构造方法中不应调用可被覆盖的方法

子类可以从父类(超类)继承所有的非私有的方法和变量,但子类不继承父类的构造函数。     每个类至少有一个构造函数,如果不写一个构造函数,Java编程语言将提供一个,该构造函数没有参数,函数体为空。如...

网络安全,不应止于审核登录事件

如果想要更好的进行Windows网络的安全保护和更好地了解用户活动,那么审计登录事件通常是IT从业者优先考虑的措施。更重要的是它是信息系统遵守法规限制的首要要求。 然而,对于想要保护Windows网...

[转]诺奖得主警告人类不应和外星人说话

人类是否应该向外星人暴露自己的位置?诺贝尔物理学奖获得者布莱恩·施密特认为,这是非常不明智的。“我认为向外星人暴露我们在哪儿恐怕不是一件明智的事。任何与外星人的接触可能都不是一件愉快的事。” “...
  • wwwid
  • wwwid
  • 2012年08月28日 14:56
  • 1248

开发者探讨LBS未来 不应只有“Foursquare”

开发者探讨LBS未来 不应只有“Foursquare”2011-02-23 15:01 | 1684次阅读 | 来源:未知 【已有3条评论】发表评论关键词:LBS | 作者:杨东杰 | 收藏这篇资讯导...

随感,不应被悲伤

听许巍的歌,感慨良多。 曾梦想仗剑走天涯, 看一看世界的繁华, 年少的心总有些轻狂, 如今你四海为家。   向前不停的奔跑,不在意周边的风景,更别说回首过往。 曾梦想仗剑走天涯,如今却被...

未来不应成为当下的恐惧

这篇文章并非自己的文章,从爱好小径的【Franklu的发现之旅】中发现一篇引用文章,好奇之下自己也点开看看! 突然有一种让自己深深省思的感觉,随着年龄增长我们自己到底要的是什么?前几天参加了一场...
  • fangix
  • fangix
  • 2012年01月07日 11:46
  • 2192

程序员不应轻易当真的那些话

程序员不应轻易当真的那些话 一、只要好好工作就会给你加薪的 我只能说很傻很天真。 二、只要技术牛X就能混得好 技术的高度没有止境,比起你不分白天黑夜的编程,那些钻研于口才的也许...

程序设计组织不应测试自己的程序

3.程序设计组织不应测试自己的程序 在宏观意义上,一个程序设计组织或一个工程项目是个有生命的有机体,它同样有心理学问题。在大多数情况下,人们都以“在给定日期内,以一定代价完成程序编制任务的能力”来衡...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不应被遗忘的项目模板
举报原因:
原因补充:

(最多只允许输入30个字)