![](/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.