我目前正在开发一个需要使用自定义 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 的等效版本,如果存在,它将加载该版本,如果不存在,它将尝试加载本地版本。
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消