在.Net中,我想枚舉所有AppDomain上的所有加載的程序集。爲我的程序的AppDomain做它很容易AppDomain.CurrentDomain.GetAssemblies()
。我是否需要以某種方式訪問每個AppDomain?或者,是否有一個工具可以做到這一點?如何列出所有加載的程序集?
回答
使用Visual Studio
- 附加一個調試的過程(如調試或調試開始>附加到進程)
- 調試時,顯示模塊窗口(調試>窗口>模塊)
這給出了有關每個程序集,應用程序域的詳細信息,並且有幾個加載符號的選項(即包含調試信息的pdb文件)。
使用Process Explorer的
如果你想要一個外部工具,你可以使用Process Explorer(免費軟件,Microsoft發佈)
點擊一個過程,它會顯示一個列表與所有使用的組件。該工具是相當不錯的,因爲它顯示其他信息,如文件句柄等
編程
檢查this SO問題,解釋如何做到這一點。
這比在這裏解釋的更好,因爲在一個進程的屬性頁面中,Process Explorer確切地顯示了哪個AppDomain(包括'共享域')程序集被加載到。因此,它顯示的不僅僅是將哪些.dll文件加載到進程中。很高興知道他們使用什麼API來顯示它(「編程式」鏈接只會給CurrentDomain中的程序集)。順便說一句 – Govert 2012-02-09 11:21:45
這就是我最終的結果。這是所有屬性和方法的列表,並列出了每種方法的所有參數。我沒有成功獲得所有的價值。
foreach(System.Reflection.AssemblyName an in System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()){
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(an.ToString());
foreach(Type type in asm.GetTypes()){
//PROPERTIES
foreach (System.Reflection.PropertyInfo property in type.GetProperties()){
if (property.CanRead){
Response.Write("<br>" + an.ToString() + "." + type.ToString() + "." + property.Name);
}
}
//METHODS
var methods = type.GetMethods();
foreach (System.Reflection.MethodInfo method in methods){
Response.Write("<br><b>" + an.ToString() + "." + type.ToString() + "." + method.Name + "</b>");
foreach (System.Reflection.ParameterInfo param in method.GetParameters())
{
Response.Write("<br><i>Param=" + param.Name.ToString());
Response.Write("<br> Type=" + param.ParameterType.ToString());
Response.Write("<br> Position=" + param.Position.ToString());
Response.Write("<br> Optional=" + param.IsOptional.ToString() + "</i>");
}
}
}
}
...我排除它從初始的文章,但我過濾某些響應像這樣`的foreach(在asm.GetTypes類型型()){\t \t \t \t \t \t如果((type.ToString() .IndexOf(「ACLASSIMLOOKINGFOR」)> = 0)||(type.ToString()。IndexOf(「BCLASSIMLOOKINGFOR」)> = 0)){...` – s15199d 2011-11-30 18:02:41
- 1. 如何獲取所有當前加載的程序集列表?
- 2. 列出所有引用的程序集
- 3. 如何爲AppDomain預加載所有已部署的程序集
- 4. 如何列出GAC中的所有註冊程序集?
- 5. 如何獲得所有引用的程序集列表(加載或不)
- 6. 如何從/ bin目錄中加載所有程序集
- 7. 如何從silverlight程序集加載所有資源?
- 8. 如何防止EF4動態加載所有程序集
- 9. 如何列出用Python進程加載的所有dll?
- 10. 如何從.NET程序集列出所有代表
- 11. 如何加載/卸載程序集?
- 12. 加載程序集時出現異常:System.IO.FileNotFoundException:無法加載程序集AndHUD
- 13. 如何使用CoreClr獲取加載的程序集中的所有類型?
- 14. 如何測量應用程序加載所有使用的程序集所用的時間?
- 15. 如何在結構樹中列出程序集中的所有屬性(包括引用的程序集)?
- 16. 加載程序集時出錯
- 17. 加載程序集時出錯:'Microsoft.Practices.EnterpriseLibrary.Common'
- 18. 如何導出程序集中所有方法的名稱?
- 19. 我如何從GAC加載程序集?
- 20. 如何調試程序集加載 - ConfigurationErrorsException
- 21. 如何在app.config中加載程序集?
- 22. 如何加載相關程序集?
- 23. C#:如何從GAC加載程序集?
- 24. 如何預加載.net程序集
- 25. 如何從c#加載C++程序集?
- 26. 如何列出角度翻譯加載的所有語言
- 27. 如何列出所有加載的Spring bean定義文件
- 28. 如何列出Rails 3中的所有自動加載路徑
- 29. 如何列出在IPFS中加載的所有文件對象?
- 30. 如何列出在ipython會話中加載的所有名稱?
請注意`GetAssemblies()`不起作用,因爲它不是遞歸的,它會錯過任何嵌套的程序集引用。我在http://stackoverflow.com/questions/383686/how-do-you-loop-through-currently-loaded-assemblies/26300241#26300241上添加了`GetAssemblies()`的遞歸版本。 – Contango 2014-10-10 15:58:29