设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

20分钟读懂程序集

2013-9-17 14:41| 发布者: 红黑魂| 查看: 3161| 评论: 0|来自: 博客园

摘要: 前言说到程序集,我刚开始对这个名词特别的郁闷!~。然后 前些天花了些时间 好好读了一下,现在比较清晰了,把一些书上看到的 记下来,以飨读者。希望没浪费你们的时间。一。程序集是什么程序集,说白了就是一个 *.d ...

前言

说到程序集,我刚开始对这个名词特别的郁闷!~。然后 前些天花了些时间 好好读了一下,现在比较清晰了,

把一些书上看到的 记下来,以飨读者。希望没浪费你们的时间。

一。程序集是什么

程序集,说白了就是一个 *.dll 或者 *.exe为后缀的文件。当然,如楼下朋友所说,是基于.NET平台的!~。谢谢。

程序集,包括以下部分:

  • Windows 文件首部
  • CLR 文件首部
  • 元数据
  • 程序集清单
  • 可选的内嵌资源

Windows文件首部(知道有这么一个东西就行):就是告诉windows操作系统,本应用程序是ASP.NET 还是

Winform还是控制台应用程序。那怎么查文件首部信息呢?

打开VS的命令行工具 然后输入

dumpbin/headers 项目名称

程序集分为2类,私有程序集和共享程序集。

CLR 首部信息:运行于.NET 的程序都是需要这个标志哦!~如果需要查看它,也很简单,

打开VS的命令行工具 然后输入

dumpbin/clrheaders 项目名称

元数据:元素就是.NET 编译后的语言,我们可以打开ILDASM.exe 工具进行查看,然后再按Ctrl +M 打开元数

据查看:

程序集清单:就是记录这个程序包含了哪些dll程序以及这个版本是啥等等。。。

二。单文件程序集和多文件程序集

2.1单文件程序集

我们大多数的情况用的都是单文件程序集哦!。这个特别好理解,比如我们新建一个类库工程,然后进行

编译,一般来说,编译之后我们会得到一个 *.dll的文件,ok,这个就是单文件程序集啦!~

2.1多文件程序集

好,我们来说说多文件程序集。我们得知道,程序集由什么构成?是模块。所以,多文件程序集就是有多个

模块构成的程序集。很遗憾的是,如果我们需要构建多文件程序集,VS IDE 是没法做的,只能通过命令行的

csc.exe 命令进行。真辛苦~~~。

(1)在记事本里 写一段简单的code,如下:

复制代码
using System;

namespace Person
{
  public class China
  {
    public void DisplayChinese()
    {
      Console.WriteLine("I'm Chinese");
    }
  }
}
复制代码

然后,打开你VS 命令行,把上面的生成一个模块,命令如下:

csc.exe /t:module China.cs

我们能看到生成了一个:China.netmodule的模块文件。

(2),接着我们在新建一个文件,并且这个文件生成是dll文件。

复制代码
using System;

namespace Person
{
  public class Japan
  {
    public void DisplayJapanese()
    {
      Console.WriteLine("I'm Japanese");
    }
  }
}
复制代码

(3)把刚China.netmodule模块加入到刚需要生成的dll文件中。

命令是:

csc.exe /t:library /out:Lanny.dll Japan.cs /addmodule:China.netmodule

我们能看到生成了一个Lanny.dll的文件。。我们可以把这个文件引入到程序中进行测试。Ok,我们一个多文

件程序集就这样程序。但是,我感觉这样的用处不大。

Japan j = new Japan();
      j.DisplayJapanese();
      Console.ReadKey();

能弹出“I'm Japanese”,说明我们引用成功了。

三。程序集的分类

程序集分为私有程序集和共享程序集

3.1私有程序集。

(1)啥是私有程序集。顾名思义,私 就是 私有的意思。就是我们新建的项目库中保留的dll 都是私有程

序集。比如,在我其中一个MyTestConsle的项目,在Bin/Debug里面都是私有程序集。

(2)配置私有程序集(probing 属性)

一般情况下,我们需要dll,直接copy过去,是的,这样很方便。但是,有的时候,我们需要把dll放到不同的

文件中,那么这个时候,就需要进行配置。别担心,特别的简单哦。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部