C# NET中的模块是什么?

C# NET中的模块是什么?,c#,.net,module,C#,.net,Module,模块到底是什么?模块、类和函数之间的区别是什么?如何访问C#中的模块 我问这个问题是因为我只想在运行时(不使用代码签名)计算某些特定函数的IL代码的校验和。模块是程序集中代码的逻辑集合。一个程序集中可以有多个模块,每个模块都可以用不同的.NET语言编写(据我所知,VS不支持创建多模块程序集) 程序集包含模块。 模块包含类。 类包含函数 是的,您可以在运行时通过反射访问程序集、模块、类、函数、属性、字段等。作为其他答案的补充: MSDN声明:“模块是没有程序集清单的Microsoft中间语言(MS

模块到底是什么?模块、类和函数之间的区别是什么?如何访问C#中的模块


我问这个问题是因为我只想在运行时(不使用代码签名)计算某些特定函数的IL代码的校验和。

模块是程序集中代码的逻辑集合。一个程序集中可以有多个模块,每个模块都可以用不同的.NET语言编写(据我所知,VS不支持创建多模块程序集)

程序集包含模块。 模块包含类。 类包含函数


是的,您可以在运行时通过反射访问程序集、模块、类、函数、属性、字段等。

作为其他答案的补充:

MSDN声明:“模块是没有程序集清单的Microsoft中间语言(MSIL)文件。”

通过使用程序集链接器(al.exe)实用程序生成程序集清单,可以将模块“链接”在一起。如果我没记错的话,CLR可以为一个程序集加载单个模块,这样只加载必要的模块

编辑:找到一个Netmodules列表,以及您想要它们的原因

这里有另一个涉及校验和主题。答案提到使用GetILAsByteArray方法获取IL。

A文件 这就是模块

module: A single file containing content that can be executed by the VES
(其中,
VES
是一个读取.NET程序集并将其转换为机器代码的程序。)参见第16页的分区I

--

程序集是文件系统(模块)中文件的一致集合。看

显然,类定义是在文件(模块)itelf中定义的。

还有一个VB“module”语句,它与程序集和编译内容无关,类似于C#static类:

Module语句定义了整个命名空间中可用的引用类型。模块(有时称为标准模块)与类相似,但有一些重要的区别。每个模块只有一个实例,不需要创建或分配给变量。模块不支持继承或实现接口。请注意,从类或结构的意义上讲,模块不是类型——您不能将编程元素声明为具有模块的数据类型

您只能在命名空间级别使用模块。这意味着声明 模块的上下文必须是源文件或命名空间,并且不能为空 类、结构、模块、接口、过程或块。你不能 将一个模块嵌套在另一个模块或任何类型中。更多 有关详细信息,请参见声明上下文和默认访问级别

模块与程序具有相同的生存期。因为它的成员 都是共享的,它们的生命周期也等于程序的生命周期

模块默认为朋友访问。您可以调整它们的访问级别 使用访问修饰符。有关详细信息,请参见中的访问级别 Visual Basic

模块的所有成员都是隐式共享的


简而言之,VB中的模块类似于C#静态类

,通常(在VS中没有选项)程序集由单个模块组成。但是,使用命令行工具可以创建多个模块的程序集(其中一个模块将包含整个程序集的元数据)。允许clickonce的增量下载可能很有用。但是否可能跨多个程序集进行模块跨越?欢迎提供指向解决方案的链接,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么,以及它为什么存在,然后引用你链接到的页面最相关的部分,以防目标页面不可用。很明显,主要的主题是将“模块”作为一种组件来讨论,所以当文档中对其进行了很好的描述时,没有必要给出详细的答案。像您这样引用是完全正确的。这只是为了确保如果链接因任何原因而中断,您的答案不会立即失效。谢谢你的努力!