神秘的引用

应用情境:

      抽象描述:在项目的编译期,开发人员想介入实现自定义的功能。

n       案例1:希望将输出程序集拷贝到某个路径或者注册到GAC

n       案例2:编译时连接到数据库,为指定的表生成强类型的Dataset,并引用它们。

n       案例3:当项目的版本升级时,自动为程序集生成出版商策略程序集(publisher policy)。

      等等。现实中的应用往往比以上的案例要复杂的多,但总的出发点都是一致的:通过一定的方法和策略把一些任务封装起来,这些任务具有如下的特性:

n       有一定的规律,如每日构建;

n       重复执行,如log编译信息;

n       机械性比较高,如批处理文件,拷贝、删除、注册等等

n       复杂度比较高人工处理容易出错的任务,如根据xml schema生成CS类文件。

通过封装,到达的目的只有一个:提高工作效率,节约劳动成本。

伴随.NET2.0出现了MSBuilde组件,如果希望详细的了解它的特性,建议还是参考MSDN

      本例的通过如下的应用情境展示了MSBuild的一些特性:

编译时将本机上的一些xsd文件转化成一组cs文件,并为这些cs文件创建一个新的工程,编译

这个工程,并把该工程的输出程序集添加为源工程的引用。当然,解决这个问题的办法还可

以用
VS IDE提供的Customtool机制,这种实现下次再写。

      写到这里有点烦,罗里罗嗦的讲个不停,就是没提源代码在哪里下载,有源代码人家不

会自己看呀?就是就是,请各位下载源码看了再议吧。source and demo download .

   勃主,题目不是神秘的引用吗?我怎么就没见哪里神秘呢?是吗?请你自己看看项目的引

用里面是否存在包含了Teacher或Student类的程序集?没有吧?看不见的引用却在起作用,

这还不够神秘呀?

   别说我没告诉你,如果你把TestBuild.csproj用文本编辑器打开看看或者在解决方案浏

览器里把TestBuild项目卸载然后编辑,就可以发现其实一点都不神秘了。被我忽悠了吧?

生气吗?
   
   其实,是工程文件中这句话起了隐藏引用的作用的,它从内存中添加了引用,所以从解

决方案浏览器中我们不能发现。

<Output TaskParameter="AssemblyReference" ItemName="Reference" />


   

 

posted @ 2006-10-31 16:56  头发又乱了  阅读(1610)  评论(5编辑  收藏  举报