【问题标题】:Will two identical dll's be both loaded (if located in different locations and referenced by two different applications)是否会同时加载两个相同的 dll(如果位于不同的位置并被两个不同的应用程序引用)
【发布时间】:2025-11-26 23:00:02
【问题描述】:

假设我有两个托管在 IIS 上的 ASP.NET 网站。两者在 bin 文件夹中都有相同的 DLL 程序集“1.dll”。两个“1.dll”DLL 是否都由 CLR 加载,或者是否足够聪明地加载一次,然后检查是否已在其他地方加载了具有所需版本/名称的程序集?

如果在不要求特定版本的情况下引用“1.dll”会有所不同吗?

如果两个站点使用相同或不同的应用程序池,会有什么不同吗?

【问题讨论】:

标签: c# asp.net .net dll clr


【解决方案1】:

程序集被加载到应用程序域中,这是进程内的逻辑边界。因此,如果您的 Web 应用程序在不同的应用程序池中运行(我的意思是不同的工作进程) - 是的,它会再次加载。

如果在不需要的情况下引用“1.dll”会有所不同吗 具体版本? 没有

如果两个网站使用相同或不同,会有所不同吗 应用程序池?如果应用程序池相同,那么它可能使用共享应用程序域(虽然不太确定)

更新:为了回答您的第二个问题,我在进程资源管理器中检查了在同一个池中运行的两个网站的加载程序集,不同的应用程序域有自己的程序集实例。

【讨论】:

    最近更新 更多