繁体   English   中英

CLR 如何从程序集中加载文件?

[英]How does CLR load a file from an assembly?

下面是一个多文件程序集,由两个托管模块组成,一个带有清单: 在此处输入图像描述

所以 RUT.netmodule(RUT 代表罕见的使用类型)是一个文件(.netmodule),它是程序集的一部分。

假设我的客户端应用程序引用了RUT.netmodule中的一个类型, MultiFileLibrary.dll是一个强名称程序集,它安装在 GAC 中。 因为RUT.netmodule在物理上并不驻留在MultiFileLibrary.dll中,所以 GAC 不会有RUT.netmodule

所以我的问题是,也许 CLR 被配置为检查应用程序的基目录以在知道引用的类型在不同的模块文件中之后查找RUT.netmodule 但这也意味着RUT.netmodule必须始终位于应用程序的基本目录中,这对我来说听起来很奇怪,好像我有多个应用程序然后我需要在它们的基本目录中拥有多个RUT.netmodule 是否有一种在 GAC 中“安装” RUT.netmodule的方法,或者当在 GAC 中安装MultiFileLibrary.dll时,任何 .netmodule 文件也会被复制到 GAC 中?

我从未使用过多文件程序集,但据我所知,您应该能够使用程序集 linker 工具 (al.exe) 对 .netmodule 进行签名。 文档包含一个可能相关的小引号:

如何:使用强名称签署程序集
...

  • 通过使用程序集 Linker (Al.exe) 将 .NET 框架代码模块(.netmodule 文件)与密钥文件链接。

我的猜测是,即使您将程序集放在 GAC 中,它仍然会引用 .netmodule 并且如果 .netmodule 已签名,它应该可以工作。 希望这些信息对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM