①什么是程序集?
可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件.
嗯,这个确实简单了些,但我是这么理解的.详细:
http://blog.csdn.net/sws8327/archive/2006/09/21/1244642.aspx

②程序集和命名空间的区别?
一个程序集可以跨越n个命名空间,一个命名空间也可以包含n个程序集.(估计你该晕了)

如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式。只有同时指定类型所在的命名空间及实现该类型的程序集,才能完全限定该类型。(摘抄自《精通.NET核心技术--原来与架构》   电子工业出版社)

也就是说,你要创建一个类的实例,必须知道该类的  命名空间(这个一般都知道)+程序集(这个很容易被我们忽略,因为一般我们不需要引用外部的程序集,如果你用C#做过Excel文件的导入导出,就会知道必须添加一个Excel相关的程序集引用)

③怎样通过命令行创建程序集?
我对命令行向来反感,如果你想知道,look here:
http://www.cnblogs.com/3echo/archive/2006/02/14/330579.html

④我怎么把项目和程序集联系起来理解?
一个项目对应一个程序集.项目名与程序集名相同(03版,05版乱七八糟,随机生成的程序集名).
一般的我们每创建一个.NET项目(ASP.NET(VS2005里没有),WinForm,类库,控制台等),IDE都会自动生成一个AssemblyInfo.cs的文件,打开看看(03版)

1using System.Reflection;
 2using System.Runtime.CompilerServices;
 3
 4//
 5// 有关程序集的常规信息是通过下列
 6// 属性集控制的。更改这些属性值可修改与程序集
 7// 关联的信息。
 8//
 9[assembly: AssemblyTitle("")]
10[assembly: AssemblyDescription("")]
11[assembly: AssemblyConfiguration("")]
12[assembly: AssemblyCompany("")]
13[assembly: AssemblyProduct("")]
14[assembly: AssemblyCopyright("")]
15[assembly: AssemblyTrademark("")]
16[assembly: AssemblyCulture("")]        
17
18//
19// 程序集的版本信息由下列 4 个值组成:
20//
21//      主版本
22//      次版本 
23//      内部版本号
24//      修订号
25//
26// 您可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,方法是按
27// 如下所示使用 '*':
28
29[assembly: AssemblyVersion("1.0.*")]
30
31//
32// 要对程序集进行签名,必须指定要使用的密钥。有关程序集签名的更多信息,请参考 
33// Microsoft .NET Framework 文档。
34//
35// 使用下面的属性控制用于签名的密钥。
36//
37// 注意:
38//   (*) 如果未指定密钥,则程序集不会被签名。
39//   (*) KeyName 是指已经安装在计算机上的
40//      加密服务提供程序(CSP)中的密钥。KeyFile 是指包含
41//       密钥的文件。
42//   (*) 如果 KeyFile 和 KeyName 值都已指定,则 
43//       发生下列处理:
44//       (1) 如果在 CSP 中可以找到 KeyName,则使用该密钥。
45//       (2) 如果 KeyName 不存在而 KeyFile 存在,则 
46//           KeyFile 中的密钥安装到 CSP 中并且使用该密钥。
47//   (*) 要创建 KeyFile,可以使用 sn.exe(强名称)实用工具。
48//       在指定 KeyFile 时,KeyFile 的位置应该相对于
49//       项目输出目录,即
50//       %Project Directory%\obj\<configuration>。例如,如果 KeyFile 位于
51//       该项目目录,应将 AssemblyKeyFile 
52//       属性指定为 [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
53//   (*) “延迟签名”是一个高级选项 - 有关它的更多信息,请参阅 Microsoft .NET Framework
54//       文档。
55//
56[assembly: AssemblyDelaySign(false)]
57[assembly: AssemblyKeyFile("")]
58[assembly: AssemblyKeyName("")]
59

汗,,[assembly: AssemblyTitle("")],,,,竟然程序集名是空的....不过你从该项目的文件夹里确实能翻出与项目名相同的.dll文件.估计如果你不在这条语句里赋值,IDE默认生成的程序集与项目名相同.大胆用吧.(可是,我不知道怎么用程序集?敬请期待下一篇:C#反射Reflection学习随笔_AX)

⑤自知,我的解决方案(包含0~n个项目)用到了什么程序集?

                //遍历访问当前应用程序域的程序集Assemble
                foreach (Assembly assem in AppDomain.CurrentDomain.GetAssemblies())
                {
                    //反射当前程序集的信息
                    Response.Write("Assembly:"+assem.FullName+"<br>");
                }

⑥我们苦苦寻觅的Assembly里面到底是什么东西?有什么值得我们去苦苦探究的?
其实在上面的AssemblyInfo.cs代码中,我们已经看出来一些东西,它里面包含该Assembly的名称/产品/描述/拷贝权..(鬼才关心)和版本号(这个很重要,但我觉得还是没什么太大的用处,是dll Hell 的克星,顺带说一句,同一Assembly名称的不同版本号的Assembly可同时运行),还有一个密钥的概念,共享程序集和部署用的,看了半天没看明白,就不误人子弟了. 
那Assembly的主要用处是:
ⅰ与反射Reflection结合起来用,动态创建你所需要的类!!
ⅱ与反射Reflection结合起来用,获得Assemble里类的信息
(据可靠的小道消息说Assembly里存的是一张包含元数据类名什么的表)
ⅲ使用别人已封装好的类.

C#程序集Assembly学习随笔(第一版)_AX相关推荐

  1. C#程序集Assembly学习随笔(增补版,附图)_AX

    我一直以为我是个人才,今天才TMD知道,我是个天才!  下面的问题一下就弄出来了. 上篇我讲了下我对Assembly的初步认知. 现在来说说怎么使用已有的Assembly. 比如说我在做一个解决方案时 ...

  2. Assembly学习心得

    http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...

  3. Ibatis学习随笔

    Ibatis学习随笔 < person >       < id > 1 </ id >     < firstName > Clinton </ ...

  4. Delphi面向对象学习随笔六:接口

    Delphi面向对象学习随笔六:接口   Delphi面向对象学习随笔六:接口 作者:巴哈姆特 (转载请注明出处并保持完整) 在对象化中,类的继承是一个非常强大的机制:而更加强大的继承机制应该是来自从 ...

  5. python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...

    老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法,包括部件的行数.列数.当前项.当前行.当前列等属性访问方法. 1.行数rowCount QTableWidge ...

  6. Delphi面向对象学习随笔一:类与对象的关系

    Delphi面向对象学习随笔一:类与对象的关系 作者:巴哈姆特 http://www.cnpack.org (转载请注明出处并保持完整) 工作几年了,总想做点总结,于是有了这篇东西,叫随笔吧呵     ...

  7. CLR: 那些你不知道你不知道的事情 程序集(Assembly)和模块(Managed Module)

    CLR: 那些你不知道你不知道的事情   程序集(Assembly)和模块(Managed Module)     前言 一直都用集成开发坏境(IDE),一直对模块和程序集的概念理解的不是很直观,因为 ...

  8. 64位BASM学习随笔(一)

     64位BASM学习随笔(一) Delphi的BASM一直是我最喜爱的内嵌汇编语言,同C/C++的内联汇编相比,它更方便,更具灵活性,由于C/C++的内联汇编仅仅能是或插入式的汇编代码,函数花括号 ...

  9. 2021.3.14学习随笔

    学习随笔 摆仙果 题目具体链接 给定有规律的字符序列,对比输入的字符序列,对比相同的长度. 题目的不同之处:该题是字符串头部对齐.还有不对齐的,就类似与字符串匹配 #include<iostre ...

最新文章

  1. 70种芯片细分领域、国产MCU重要代表企业
  2. 车道线检测:几何约束联合车道分割和车道边界检测
  3. Python零散知识点记录
  4. 数学狂想曲(十二)——熵(2), 阴影面积, 肺炎版《黄冈密卷》
  5. 商业逻辑12讲之人力资源的逻辑
  6. 51. N 皇后018(回溯法求解)
  7. 复习者-Java EE 7概览
  8. cad服务器手动改自动,几百块就能手动改自动? 怎样省钱换来方便
  9. S如何边缘控制_强夯法效果如何?来看看这个检测结果
  10. 剑指offer:滑动窗口的最大值(栈和队列)
  11. JavaScript设计模式-工厂方法模式
  12. 探索安卓中有意义的动画!
  13. 简单mysql优化_MySQL简单优化
  14. 不输 MacType,这些优化思路也能让 Windows 字体细腻清晰
  15. DA-4-FixBi: Bridging Domain Spaces for Unsupervised Domain Adaptation
  16. Qt浅谈之三十系统托盘(QSystemTrayIcon)
  17. 微信订阅消息推送(记录)
  18. 2022-2027年中国商用中央空调行业发展监测及投资战略研究报告
  19. spark使用中的一些总结-进阶版
  20. Matrixport,交易、借贷和托管,如何打造数字货币界的银行?

热门文章

  1. 域名劫持到百度被黑详解DNS技术
  2. Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
  3. #!/bin/sh与#!/bin/bash的区别
  4. php 添加水印, 格式转换, 变换大小 Watermark, png2jpg, resize
  5. Mysql之inner join,left join,right join详解
  6. 爬虫入门三(获取各国网址,三种网页抓取方法,下载缓存)
  7. Kinect for Windows V2和V1对比开发___彩色数据获取并用OpenCV2.4.10显示
  8. curl 常用的命令
  9. linux(十三)之磁盘分区、创建文件系统、挂载
  10. 数据清洗-拉格朗日插值