不应被遗忘的项目模板

转载 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的模板在一起显示了。也可以在这里新建一个目录,下面放入自己的模板,这样就创建了一个项目分类。

 

 

不应被遗忘的项目模板

1.          问题的引出在一些较大型的项目中,为了可重用,易维护,常常将系统设计为可插接式的,就是用一个框架将很多个小的组件组装起来。有时一个系统中的组件有数百个之多,而这些组件都要去调用一...
  • go2newlife
  • go2newlife
  • 2007年11月20日 21:54
  • 474

盘点那些不曾被遗忘的细节设计

设计是一门推陈出新的艺术,虽然在互联网茫茫产品中曾涌现出过很多让人眼前一亮的设计,但随着时间推移和产品迭代,其中一些逐渐被新的想法所替代。纵然所谓没有最好只有最适合的设计,也依然令人略感惋惜。本期就和...
  • wangqjpp
  • wangqjpp
  • 2015年06月19日 08:42
  • 441

Asp.net 网站发布到服务器后 访问报错:这是预编译工具生成的标记文件,不应删除!

在本地测试一切正常,点发布网站,上传到服务器。然后再访问会有个别页面报错:这是预编译工具生成的标记文件,不应删除! 整了一晚上, 还是没找出原因,网站我又重复编译了多次还是没效果。后来记起来,这个报...
  • sabic
  • sabic
  • 2011年08月10日 11:18
  • 2812

非主流自然语言处理——遗忘算法系列(三):分词

前面介绍了词库的自动生成的方法,本文介绍如何利用前文所生成的词库进行分词。...
  • gzdmcaoyc
  • gzdmcaoyc
  • 2015年11月28日 17:40
  • 2172

非主流自然语言处理——遗忘算法系列(一):算法概述

一、前言   这里“遗忘”不是笔误,这个系列要讲的“遗忘算法”,是以牛顿冷却公式模拟遗忘为基础、用于自然语言处理(NLP)的一类方法的统称,而不是大名鼎鼎的“遗传算法”!   在“遗...
  • gzdmcaoyc
  • gzdmcaoyc
  • 2015年11月23日 11:31
  • 4408

被遗忘的 LDFLAGS

人人都知道在make.conf里面改CFLAGS可以对编译进行优化。可是长久以来make.conf里面一直缺少另外一个很重要的优化参数,就是LDFLAGS LDFLAGS是用来制定动态Libra...
  • sailor201211
  • sailor201211
  • 2013年01月06日 22:03
  • 442

被遗忘的世界

 被遗忘的世界我一个人,活在自己的世界。那是一个,被人遗忘的世界。我一个人,这个世界所抛弃。没有一个,能够不会所抛弃。虽然,现代社会已经进步,人民的观念有了很大的变化。只是,良心的冷漠并不是一件坏事,...
  • zentaya
  • zentaya
  • 2008年07月31日 14:43
  • 121

被遗忘的青春

在这个多彩芬芳的城市中,我有很多时候都不知道自己该去做什么,不知道自己的未来在哪里,每天都是浑浑噩噩,在这种茫然而迷蒙的时光中度过了自己人生的青春,走过了自己大半人生的长征路;回想以前走过的旅途,回想...
  • u014751430
  • u014751430
  • 2014年04月16日 18:00
  • 78

被遗忘的NSException

NSException是什么? 最熟悉的陌生人,这是我对NSException的概述,为什么这么说呢?其实很多开发者接触到NSException的频率非常频繁,但很多人都不知道什么是NSExce...
  • wanglei0918
  • wanglei0918
  • 2017年06月27日 10:40
  • 77

被遗忘的连分数

如今的一般大、中学生几乎都不知道连分数为何物,其责任当然不在他们本身。历来的中学数学教学大纲都未将它们修订进去。进入大学以后,微积分、线性代数、概率论等后续课程又不讲它,以致很多人对它一无所知。实在可...
  • lanchunhui
  • lanchunhui
  • 2016年06月18日 12:30
  • 1862
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不应被遗忘的项目模板
举报原因:
原因补充:

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