标签:文件 没有 依赖 image 组成 就是 名称 loading span
模块类型空间
模块类型空间是指该模块可以访问的类型集合,它通过模块清单文件的Runtime节点来配置。模块 类型空间由两部分组成,一部分是模块本地的程序集,另一部分是模块依赖其它模块的程序集,它们分别 在Runtime节点下的Assembly和Dependency节点来定义。模块本地程序集是一些指定路径的.dll文件,而 依赖程序集则是依赖于其它模块共享的本地程序集。Dependency节点需要指定依赖的程序集所在的模块和 具体的程序集名称。需要注意的是,如果在Dependency中没有指定具体的程序集,则意味着这个模块依赖 于另一个模块的所有程序集。因此,这种依赖将可能是循环依赖。
如果一个宿主模块还包含了附加模块,那么,宿主模块的类型空间还包括在所有片段中的类型空间。 具体来说,一个模块的类型空间由以下部分组成:
在UIOSP框架,一个模块可以直接复用另一个模块的共享程序集中的类型。一旦发生垮模块类型复用, 就意味着一个模块对另一个模块产生了依赖。我们可以通过在清单文件Runtime配置节点下声明一个 Dependency配置节点来依赖另一个模块的某个程序集或者所有程序集。为了确保一个模块在运行过程中不 会出现无法加载依赖的类型的异常,在启动前我们必须确保模块依赖的程序集存在。解析就是检查一个模块 所有依赖的程序集是否都存在的过程。只有当模块依赖的程序集存在且依赖程序集所在模块也解析成功, 这个模块才能被正常使用。
在UIOSP,每一个模块都具备独立的类型空间,而模块类加载器通过对CLR类加载器进行扩展,实现 模块隔离的类型加载。该加载器,确保我们只能在一个模块的类型空间中加载类型。模块类加载器的功能 通过IBundle接口的LoadClass和LoadResource这两个方法访问。当从模块加载一个类型时,它会依照图4-11 顺序来加载类型。
标签:文件 没有 依赖 image 组成 就是 名称 loading span
原文地址:https://www.cnblogs.com/iwanwu/p/9926183.html