加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 了解Web.config文件中的ASP.NET程序集引用管理

发布时间:2020-12-15 08:05:06 所属栏目:百科 来源:网络整理
导读:我有一个简单的疑问:我有一个我想参考的外部组件.我有一个Asp.Net应用程序.我想在我的Asp.Net应用程序中使用该程序集. 我添加了一个引用,VS的作用就是将我的dll放在我网站的Bin子目录中. 我以为VS会修改我的web.config文件添加外部引用… 那么只有在GAC中引
我有一个简单的疑问:我有一个我想参考的外部组件.我有一个Asp.Net应用程序.我想在我的Asp.Net应用程序中使用该程序集.

我添加了一个引用,VS的作用就是将我的dll放在我网站的Bin子目录中.

我以为VS会修改我的web.config文件添加外部引用…
那么只有在GAC中引用程序集时才会发生这种情况吗? (鉴于需要公共令牌和版本,这是有道理的).

谢谢

解决方法

当CLR加载程序集以供执行时,它会检查程序集的清单以确定运行它所需的依赖项.它通过一系列步骤来执行此操作:

>检查重定向 – 如果程序集具有强名称,CLR将首先检查相应的配置(app.config,web.config等)以查看是否指定了任何绑定重定向.绑定重定向允许CLR说,我应该加载v1.0.0.0,而不是加载v2.0.0.0.如果没有找到强名称程序集的绑定重定向,它将检查GAC中的策略文件,如果未找到策略文件,则检查machine.config.如果未指定绑定重定向,则CLR将使用调用程序集清单中指定的程序集名称来加载程序集.
>检查组件是否已经加载 – CLR确定组件是否先前已加载,如果已加载,它使用相同的加载组件,否则继续…
>从GAC加载程序集 – 如果以前无法加载程序集并且名称很强,则CLR将尝试从全局程序集缓存加载程序集.
> CodeBase – 如果CLR仍然无法找到程序集,它将使用codeBase路径尝试找到程序集.
>探测 – 如果CLR仍然找不到装配,它将检查装配的探测路径.默认探测路径是AppDomain的应用程序基本路径,当前正在加载程序集.

(这些都改编自一篇名为Understanding .Net Assemblies and References 的伟大文章).

对于Web应用程序,CLR仍然执行上述所有操作,但AppDomain应用程序基本路径是IIS应用程序中的/ bin文件夹.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读