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



我有个简单的疑问:我有一个要引用的外部程序集。我有一个Asp.Net应用程序。我想在我的Asp.Net应用程序中使用该程序集。

我添加了一个引用,VS所做的只是将我的dll放在我网站的Bin子目录中。

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

感谢

CLR加载程序集以供执行时,会检查程序集的清单,以确定运行程序集需要哪些依赖项。要做到这一点,需要经过一系列步骤:

  1. 检查重定向-如果程序集是强命名的,CLR将首先检查相应的配置(app.configweb.config等),以查看是否指定了任何绑定重定向。绑定重定向允许CLR说,在应该加载v1.0.0.0的地方,而不是加载v2.0.0.0。如果没有为强命名程序集找到绑定重定向,它将检查GAC中的策略文件,如果没有找到策略文件,它将检查machine.config。如果未指定绑定重定向,CLR将使用调用程序集的清单中指定的程序集名称来加载程序集。

  2. 检查程序集是否已加载-CLR确定程序集以前是否已加载,如果已加载,则使用相同加载的程序集,否则继续。。。

  3. 从GAC加载程序集-如果以前无法加载程序集并且该程序集是强命名的,CLR将尝试从全局程序集缓存加载该程序集。

  4. CodeBase-如果CLR仍然找不到程序集,它将使用codeBase路径尝试定位程序集。

  5. 探测-如果CLR仍然找不到程序集,它将检查程序集的探测路径。默认探测路径是当前正在加载程序集的AppDomain的应用程序基本路径。

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

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

相关内容

最新更新