装配的类型 - 最重要的是什么

时间:2013-11-22 19:33:11

标签: c# .net assemblies

静态和动态装配的区别是什么。只有在程序运行期间可以从文件加载一个而另一个可以创建的事实?

2 个答案:

答案 0 :(得分:8)

静态程序集可以包括.NET Framework类型(接口和类),以及程序集的资源(位图,JPEG文件,资源文件等)。静态程序集以可移植可执行(PE)文件的形式存储在磁盘上。您还可以使用.NET Framework创建动态程序集,这些程序集直接从内存运行,并且在执行之前不会保存到磁盘。您可以在执行后将动态程序集保存到磁盘。

静态程序集是永久存储在磁盘上的程序集。它们可能包括.NET Framework类,接口以及资源文件。这些程序集不直接从内存加载,而是在CLR(公共语言运行时)请求它们时直接从磁盘加载。这些程序集用于作为文件或文件集存储在磁盘上。每当编译C#代码时,就会得到一个STATIC程序集。

动态程序集是那些在执行之前未存储在磁盘上的程序集,实际上在执行后它们存储在磁盘上。当.NET运行时调用它们时,它们直接从内存加载,而不是从磁盘加载。 Reflection emit提供了许多创建动态程序集的方法。这些方法是使用System.Reflection.emit命名空间在内存中创建的.System.Reflection.Emit命名空间包含允许编译器或工具发出元数据和Microsoft中间语言(MSIL)的类可选地在磁盘上生成PE文件。当应用程序需要这些程序集中的类型时,这些动态程序集将在运行时动态创建

简单来说,静态程序集我们每天与它进行交互的正常程序集会加载它等等。动态组件,你用反射和调用来创建它。

信息来源:http://www.dotnetheaven.com/article/static-assembly-vs-dynamic-assembly-in-csharp和MSDN

答案 1 :(得分:-1)

程序集将汇编程序转换为机器语言。 汇编程序意味着设置或助记符规则。 组装有两种类型- 1.自组装 2.跨汇编器