更容易。
(2) 第一个C#应用程序
? 默认情况下,编译器会将产生的单个托管模块转
换为一个程序集,即托管模块包含了清单。
? 如果把多个文件放到一个程序集中,则需要程序
集链接器工具。
(2) 第一个C#应用程序
? 运行编译过的程序集就是把托管模块中编译过的
IL代码交给CLR来执行,CLR在第一次执行时会
使用JIT编译器将IL代码转换成机器代码,放在一
个动态分配的内存块中,然后交给CPU执行,以
后执行时就使用编译过的机器码。
(2) 第二个C#应用程序(程序集)
? 生成包含多
个托管模块的程序集: ? 编写Student.cs文件 ? 编写SecondCS.cs文件, Main函数使用Student 类,并输出学生。
(2) 第二个C#应用程序
? 先编译Student.cs文件,生成托管模块: csc /t:module Student.cs ? 然后生成程序集:
方法1(直接生成SecondCS.exe) ? 编译SecondCS.cs文件,生成托管模块: csc /addmodule:Student.netmodule SecondCS.cs 方法2 (生成新的student.exe) ? 先编译SecondCS.cs文件,生成托管模块: csc /addmodule:Student.netmodule /t:module SecondCS.cs ? 然后链接以上两个托管模块,指定生成student.exe,执行入 口是SecondCS中的Main函数。 al Student.netmodule SecondCS.netmodule /target:exe /out:student.exe /main:SecondCS.Main
查看程序集信息
? 使用反编译工具ILDASM.exe ? 如:
ILDASM FirstCS.exe ILDASM Second.exe
使用IDE创建程序集
? 使用VS2008或VS2010创建一个命令行程序 ? 每一个工程就是一个程序集,工程中的文件就包 含在此程序集中。
命名空间(namespace)
? 在.net framework中FCL中的类使用命名空间来组
织,自己编写的类也可以使用命名空间来组织。
? 不同命名空间下的同名类不会冲突。
命名空间(namespace)
? FCL中的命名空间举例:
命名空间
System System.Collections System.Data System.Data.SqlClient System.Drawing
说明
包含定义
常用值和引用数据类型、事件和事件处理程序、接口、属性和处 理异常的基础类和基类。 包含定义各种集合(如
列表、队列、哈希表和字典)的接口和类。 包含大部分ADO.NET数据访问类。 包含封装 SQL Server数据提供程序的类