繁体   English   中英

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

[英]Understanding ASP.NET assembly reference management in Web.config file

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

我添加了一个引用,VS 所做的只是将我的 dll 放在我的 web 站点的 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 Assemblies and References的精彩文章)。

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

暂无
暂无

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

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