为了账号安全,请及时绑定邮箱和手机立即绑定

从 GAC 加载程序集

从 GAC 加载程序集

C#
子衿沉夜 2023-07-09 18:00:26
我目前正在开发一个需要使用自定义 dll 进行身份验证的项目。这个 dll 已在生产和测试环境的 GAC 中注册(他们是这么告诉我的)。公司政策规定您“不应在应用程序的 web.config 文件中包含 dll 引用”,也就是说,您不应具有以下内容:<添加程序集="" ....="" mydll=""> 等。在你的 web.config 中,至少对于我正在谈论的这个 dll 来说是这样。他们说,由于它已在 GAC 中注册,因此应用程序无论如何都会加载它。问题是,如果您不在 web .config 中添加程序集引用,则应用程序将找不到它,无论他们说什么。因为我确信该 dll 实际上已在 GAC 中注册,所以我的问题是:无论您是否在 web.config 中添加引用,应用程序都不能加载 dll 吗?我确信,添加对项目的引用后,dll 的 GAC 位置将存储在应用程序的程序集中,以便应用程序本身能够在 GAC 中找到程序集,无论工作系统是什么,给定该 dll 实际上已在工作系统的 GAC 中注册。但我一定是错的。它的真正运作方式是什么?我尝试从 web.config 中删除 <add assembly ...> 条目:每次在我的测试环境中引用 dll 中的方法时,都会出现运行时错误;生产环境中也会发生同样的事情;
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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

按照逻辑,应用程序在启动时会加载 GAC 中的每个程序集,您能想象那会有多慢吗?不,事情不是这样的。

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

查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信