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

asp.net-mvc – AppDomain.GetAssemblies和BuildManager.GetRefe

发布时间:2020-12-15 18:49:30 所属栏目:asp.Net 来源:网络整理
导读:只是想知道两者之间是否有任何区别,在完全信任asp.net mvc 2应用程序的上下文中。 解决方法 .NET Framework会将组合件加载到当前AppDomain中,直到需要它们为止。例如,如果你只从SomeMethod()调用第三方库,第三方DLL通常不会被加载,直到第一次运行SomeMe
只是想知道两者之间是否有任何区别,在完全信任asp.net mvc 2应用程序的上下文中。

解决方法

.NET Framework会将组合件加载到当前AppDomain中,直到需要它们为止。例如,如果你只从SomeMethod()调用第三方库,第三方DLL通常不会被加载,直到第一次运行SomeMethod()。

AppDomain.GetAssemblies()提供已经加载到当前AppDomain中的所有程序集。 BuildManager.GetReferencedAssemblies()返回从Web.config和其他地方引用的所有程序集的列表,并将这些程序集加载到当前的AppDomain中。

这里有一个实例的上述。

> SomeMethod()还没有运行。
>调用AppDomain.GetAssemblies(),返回一个不包含ThirdParty.dll的集合。
>调用SomeMethod()。
>调用AppDomain.GetAssemblies(),返回包含ThirdParty.dll的集合。

在这个例子中,CLR推迟将ThirdParty.dll加载到当前的AppDomain中,直到它是绝对必要的。因为它是必要的执行SomeMethod(),这是当它被加载。

或者:

> SomeMethod()还没有运行。
>调用AppDomain.GetAssemblies(),返回一个不包含ThirdParty.dll的集合。
>调用BuildManager.GetReferencedAssemblies(),返回一个包含ThirdParty.dll的集合。
>调用AppDomain.GetAssemblies(),返回一个包含ThirdParty.dll的集合。

在这里,即使您从未调用SomeMethod(),对BuildManager.GetReferencedAssemblies()的调用已经代表您将第三方库加载到当前的AppDomain中。

当然,这一切都要经过某些优化等,但一般的想法是成立的。

(编辑:李大同)

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

    推荐文章
      热点阅读