首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC BuildManager.GetAssemblies()

ASP.NET MVC BuildManager.GetAssemblies()
EN

Stack Overflow用户
提问于 2012-08-29 16:23:04
回答 1查看 1.8K关注 0票数 1

我正在一个ASP.NET MVC 4应用程序中工作,在应用程序启动时,我正在寻找使用BuildManager获取所有引用的程序集,我正在查看应用程序中的所有类型,以找到我想要的一些类型(它是动态的,所以在启动之前我不知道需要哪种类型)。

本质上,我的代码如下所示:

代码语言:javascript
复制
var allTypes = BuildManager.GetReferencedAssemblies()
                  .Cast<Assembly>()
                  .SelectMany(a => a.GetTypes());

我在应用程序启动时调用它,但在每个新请求开始时也调用它,以便动态查找类型。

所以我的问题是:

  1. 由于ASP.NET在需要程序集之前不会加载程序集,所以通过调用BuildManager.GetReferencedAssemblies() am,我会在需要程序集之前加载它们,并导致性能问题?
  2. 迭代所有类型对每个请求都是一个坏主意吗?我可以缓存这些类型,但是ASP.NET可以在缓存它们之后动态加载它们,对吗?如果是这样的话,我可能会错过一些确实存在的类型。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-29 16:31:17

不要每次请求都这样做:尽可能早地进行缓存;反射很慢。

预装所有程序集并在应用程序启动时完成;我在我们的许多网站上使用了一个系统,它必须根据部署的程序集进行大量的动态操作,并且在启动时完成所有的工作。

是的,因此启动速度较慢,但这比每次请求花费的时间要长得多。

然后,您很可能会对我刚才问过并回答的关于如何可靠地预加载所有已部署的程序集的问题感兴趣:How to pre-load all deployed assemblies for an AppDomain

直到今天,我仍然使用同样的过程,它就像一种魅力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12182384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档