相比AppDomain.GetAssemblies()
,BuildManager.GetReferencedAssemblies()
( System.Web.Compilation.BuildManager ) 似乎是一种更可靠的方式来获取 ASP.NET 应用程序在运行时引用的程序集,因为AppDomain.GetAssemblies()只获取“已经加载到的程序集此应用程序域的执行上下文”。
遍历所有程序集是在应用程序启动时在 DI 容器中动态注册类型的重要工具,尤其是在应用程序启动期间,可能还没有加载其他程序集(在不需要的地方),组合根是第一个需要它们的人。因此,有一个可靠的方法来获取应用程序的引用程序集是非常重要的。
虽然BuildManager.GetReferencedAssemblies()
对于 ASP.NET 应用程序来说是一种可靠的方法,但我想知道:对于其他类型的应用程序,例如桌面应用程序、Windows 服务和自托管 WCF 服务,还有哪些替代方案可用?