WEB开发网
开发学院软件开发C语言 CLRviaCSharp读书随笔-第一章 1.1 1.2 阅读

CLRviaCSharp读书随笔-第一章 1.1 1.2

 2009-05-15 08:28:22 来源:WEB开发网   
核心提示: 我所在的公司在面向服务的新技术潮流上面就是一个很好的获益的例子,因为比较早的开展了Web Service的服务,CLRviaCSharp读书随笔-第一章 1.1 1.2(3),现在已经有一个庞大的数据中心,行业内超过一半的信息都放在这里,我们的服务和软件是捆绑在一起销售的,服务费一年交一

我所在的公司在面向服务的新技术潮流上面就是一个很好的获益的例子。因为比较早的开展了Web Service的服务,现在已经有一个庞大的数据中心,行业内超过一半的信息都放在这里,我们的服务和软件是捆绑在一起销售的,服务费一年交一次。现在就算软件不卖钱,只卖服务费都够吃个七顿巴八顿的了,因此其他公司根本没法竞争,基本在这个行业站稳了老大的位置,这次金融风暴不仅没有倒下,反而收购了不少公司。

最后一个事情是最头疼的,就是对程序员的生涯规划问题。这么多新技术新语言,学哪个更有钱途呢?不知道,所以什么都得学。我觉得还是把现在公司里的技术彻底搞明白,然后寻找里面潜伏的问题,再从新技术中寻找解决方案比较踏实可靠。假如公司确实没有啥技术可言,那得考虑换家好点的公司了。

说点正事

一个程序集可以包含几个文件,我们通常看到的都是一个文件,我工作上也没用到过,不管它。

托管程序集也是DLL,com也是dll,win32也是dll.我一直很纳闷这三种东西有多少人十分清楚。首先,它们都是PE格式,再者,win32的dll是函数库,com的dl是类型库,而托管的dll嘛,就是加了IL和元数据的啦。不知道我说的对不对。

元数据又是一个不好听的名词。它可以说是IL类型的使用说明书,.NET本质论提到一点,它对于COM世界的改进来说,它是“机器可读”的。机器可读是CLR或者是虚拟机的前提呀。

1.2 将托管模块合并成程序集

源代码是原料,模块是零部件,DLL是汽车。

托管模块这破玩意一直困扰我很久,我们平常只看到一个类库在VS中编译完以后就生成DLL,好像跟模块并不是很熟的样子。结果是因为VS偷偷调用了MSBUILD。MSBUILD再调用SDK自带的编译器。如果把源代码看成原材料的话,把DLL看成汽车的话,讲源代码生成模块应该是把原材料变成零件的过程,结果VS太好心,直接把汽车就装好了。Assembly本来就有装配的意思。

资源文件也可以编译成模块,因此模块有两种,一种来自源代码,一种来自资源文件。你当然也可以把资源文件看成源代码, whatever.

     foreach (Module var in Assembly.GetExecutingAssembly().GetModules()) {

                string moduleName = var.Name;

      } 

上述代码遍历正在执行的程序集中所有模块,默认情况下只有一个模块,而且这个模块的名字跟生成的DLL或者EXE名字一样一样的,而且是带扩展名的。Type 类也有一个Module属性。

在实际工作中,我目前还没有碰到要单独处理Module的情况。倒是跟生成程序集有关的一大问题是每日构建的问题,Visual Build Pro和R2Build好像都不错,可以针对VS项目文件直接编译,不用任何配置。而且后者是免费的。既然有免费的,就可以不用研究MSBuild了。

上一页  1 2 3 

Tags:CLRviaCSharp 读书 随笔

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接