![](/img/trans.png)
[英]ASP.NET - AppDomain.CurrentDomain.GetAssemblies() - Assemblies missing after AppDomain restart
[英]Why are some .Net assemblies not available via an AppDomain's GetAssemblies() method?
我有一些代码循环通过当前加载到在ASP.NET应用程序中运行的AppDomain的类型。 以下是我获取程序集的方法:
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
当应用程序首次启动时,没有问题,我期望的所有类型都存在。 但是当我更新Web.config或杀死w3p.exe进程(或者进程因任何原因而被回收)时,只有一些我期望的类型可用。 当我使用调试器时,我注意到私有搜索路径(我的应用程序的bin目录)中的某些程序集尚未加载。 我假设所有程序集都在应用程序启动时加载并重新启动,无论它们是否立即需要。 但是在重新启动的情况下, 除非已更新这些程序集文件, 否则似乎不会发生这种情况。
我需要的是在启动时收集类型信息以供日后使用。 但是,由于在重新启动期间类型不可用,因此在需要使用类型信息时会严重破坏。 那么考虑到这一点我该如何解决或解决这个缺陷呢?
程序集是按需加载的,因此您可能尚未使用这些程序集中包含的任何类型。
您可以使用
AssemblyName[] assemblies = Assembly.GetCallingAssembly().GetReferencedAssemblies();
这样,您将获得从您调用这些方法的程序集中引用的所有程序集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.