繁体   English   中英

从GAC加载程序集

[英]loading an assembly from GAC

我目前正在从事一个需要使用自定义dll进行身份验证的项目。 此dll在生产和测试环境的GAC中都已注册(因此,他们告诉我)。 公司政策规定您“不应在应用程序的web.config文件中包含dll引用”,也就是说,您不应具有以下内容:

等等

在您的web.config中,至少对于我正在谈论的该dll。 他们说,由于它已在GAC中注册,因此该应用程序仍然会加载它。 问题是,如果您没有在web .config中添加assemby引用,则无论他们说什么,应用程序都不会找到它。

由于我确定该dll实际上已在GAC中注册,因此我的问题是:

无论您是否在web.config中添加引用,应用程序是否都无法加载dll? 我坚信,添加对项目的引用后,dll的GAC位置将存储在应用程序的程序集中,这样,无论给定的操作系统是什么,应用程序本身都将能够在GAC中找到程序集。该dll实际上已在操作系统的GAC中注册。 但是我一定是错的。 真正的工作方式是什么?

谢谢

狮子座

我尝试从web.config中删除条目:每当我在测试环境中引用dll中的方法时,我都会遇到运行时错误; 在生产环境中也会发生同样的事情;

无论您是否在web.config中添加引用,应用程序是否都无法加载dll?

通过逻辑应用程序在启动时将它们加载到GAC中的每个程序集,您能想象这样做有多慢吗? 不,那不是它的工作原理。

当您在项目中本地引用DLL时,您要做的就是将其添加到清单中,该清单告诉应用程序将其作为应用程序的一部分进行加载。 加载CLR时,它将首先检查GAC中是否存在DLL的等效版本,如果存在,则将加载该版本,否则将尝试加载本地版本。

请参阅运行时如何查找程序集

暂无
暂无

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

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