C#程序集系列05,让程序集包含多个module

本篇体验在一个程序集中包含多个module。

□ 创建3个module

→删除F盘as文件夹中的一些文件,只剩下如下3个文件

→用记事本打开MyFirstModule.cs文件,修改如下,并保存

using System;

public class MyFirstModule
{
    public static void Hello()
    {
        Console.WriteLine("来自module 1的问候~");
    }
}

→用记事本打开MySecondModule.cs文件,修改如下,并保存

using System;

public class MySecondModule
{
    public static void Hello()
    {
        Console.WriteLine("来自module 2的问候~");
    }
}

→把MyFirstModule.cs类编译成module

→把MySecondModule.cs类编译成module

→在F盘as文件夹中创建MyThirdModule.cs文件,用记事本打开编写如下代码,并保存

using System;

public class MyThirdModule
{
    public static void Hello()
    {
        Console.WriteLine("来自module 3的问候~");
    }
}

→把MyThirdModule.cs类编译成module

□ 创建2个程序集并引用运行

现在需要创建2个程序集,一个程序集中包含MyFirstModule和MySecondModule。另一个程序集包含MySecondModule和MyThirdModule。

→创建程序集AssemblyA.dll包含MyFirstModule和MySecondModule。

→创建程序集AssemblyB.dll包含MySecondModule和MyThirdModule。

→编译MainClass.cs文件,引用AssemblyA.dll程序集

以上的dos命令等同于:csc /r:AssemblyA.dll /out:MainClass.exe MainClass.cs
→运行MainClass.exe

→修改MainClass.cs文件

using System;

using System;

class MainClass
{
    static void Main()
    {
        MySecondModule.Hello();
        MyThirdModule.Hello();
    }
}


→编译MainClass.cs,应用AssemblyB.dll程序集

→运行MainClassAnother.exe

总结:一个程序集是可以包含多个module的。如果将不常用的代码放在单独的module中,就可以减少程序集的载入时间。如果通过网络下载程序集,还可以节约带宽。

“C#程序集系列”包括:

C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序

C#程序集系列02,使用记事本查看可执行程序集的IL代码

C#程序集系列03,引用多个module

C#程序集系列04,在程序集包含多个module的场景下理解关键字internal

C#程序集系列05,让程序集包含多个module

参考资料:

http://www.computersciencevideos.org/  created by Jamie King

时间: 2024-10-12 00:48:12

C#程序集系列05,让程序集包含多个module的相关文章

C#程序集系列04,在程序集包含多个module的场景下理解关键字internal

本篇在一个程序集包含多个module的场景下体验internal的含义. →查看F盘as文件夹下的文件→删除MainClass.exe→把MyFirstModule和MySecondModule组装到一个程序集中去现在,MyDll.dll程序集中包含了2个module.→反编译,把MyDLL.dll的IL代码显示到3.txt文件中→打开3.txt文件 // Metadata version: v4.0.30319 .assembly extern mscorlib { .publickeytok

C#程序集系列08,设置程序集版本

区别一个程序集,不仅仅是程序集名称,还包括程序集版本.程序集公匙.程序集文化等,本篇体验通过界面和编码设置程序集版本. □ 通过Visual Studio设置程序集版本 →右键项目,选择"属性",选择"应用程序"→点击"程序集信息",设置如下,点击确定→点击项目Properties文件夹下的AssemblyInfo.cs,可以看到程序集版本已经设置生效[assembly: AssemblyVersion("3.3.3.3")]

C#程序集系列07,篡改程序集

以下几个方面用来区分不同的程序集:○ 程序集名称:Name○ 程序集版本:Version○ 程序集公匙: Public Token○ 程序集文化:Culture 如果没有很严格地按照上面的几个方面来创建程序集,程序集是很容易被篡改的.本篇体验篡改程序集. →清空F盘as文件夹下的所有文件→在as文件夹下创建Dog.cs类,用记事本打开,编写如下,保存 using System; public class Dog { public static void MakeSound() { Console

C#程序集系列10,强名称程序集

当一个程序集的名称,版本,文化,Public Key都做了设置,就可以把这个程序集叫做"强名称程序集".强名称程序集可以防止被仿冒或篡改.本篇首先创建一个强名称程序集,接着模拟篡改程序集,看看最终结果如何? □ 创建一个强名称程序集 →在"C#程序集系列08,设置程序集版本"和"C#程序集系列09,程序集签名"中,在F盘的as文件夹中创建了一些文件→删除所有除了.cs类型的所有文件→创建一个密匙→编译Cow.cs,并用密匙签名→编译MainCla

C#程序集系列13,如何让CLR选择不同版本的程序集

本篇主要体验,在存在多个版本程序集的情况下,如何让CLR选择哪个版本程序集运行,以及程序集版本的切换. 分别生成非强名称程序集不同版本 □ 生成某个版本的程序集 →清理F盘as文件夹,剩下如下文件 →查看Cow.cs文件 using System; using System.Reflection; [assembly: AssemblyVersion("3.3.3.3")] public class Cow { public static void Moo() { Console.Wr

C#程序集系列09,程序集签名

在"C#程序集系列08,设置程序集版本"中体验了为程序集设置版本,但对于程序集的安全性来说,还远远不够.本篇体验程序集的签名. □ 程序集的签名 →F盘as文件夹下有多个文件→在程序集所在文件夹创建密匙→打印密匙密匙是一堆乱码,这是经过加密了.→在密匙的基础上创建公匙Public Key→打印公匙Public Key注意:这里的public token是public key经过哈希算法而获得的.当程序集被引用,该程序集对外是以public token形式存在的. →现在重新编译&quo

C#程序集系列06,程序集清单,EXE和DLL的区别

CLR在加载程序集的时候会查看程序集清单,程序集清单包含哪些内容呢?可执行文件和程序集有什么区别/ 程序集清单 □ 查看程序集清单 →清空F盘as文件夹中的所有内容→创建MainClass.cs文件→把MainClass.cs编译成程序集→反编译MyDll.dll,在1.txt文件中呈现 ildasm /out:1.txt MyDll.dll →打开1.txt文件 1.txt // Metadata version: v4.0.30319 .assembly extern mscorlib {

C#程序集系列02,使用记事本查看可执行程序集的IL代码

继续上一篇"C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序",在F盘的as文件夹中已经有了若干程序集.本篇体验使用记事本查看可执行程序集的IL代码. →打开"VS2012开发人员命令提示",输入如下命令,并按回车在as文件夹中多了1.txt和1.res这2个文件→输入如下命令打开1.txt // Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.18020

C#程序集系列03,引用多个module

我们经常在项目中引用程序集.通常情况下,一个程序集包含一个module,但一个程序集也可以包含多个module.本篇就来体验:在一个可以被编译成.exe可执行文件的.cs文件中引用多个module. □ 创建第一个module→在前面2篇文章中,F盘的as文件夹中存放了若干程序集等文件.→打开"VS2012开发人员命令提示",输入如下命令,最终清空了F盘的as文件夹中的所有内容→在F盘的as文件夹中创建MyFirstModule.cs,用记事本打开编写如下代码,并保存 using Sy